Skip to content

Commit edda0ca

Browse files
committed
Use Marshal.PtrToStringUTF8 for modern TFMs
Replace manual byte-by-byte UTF-8 string reading with Marshal.PtrToStringUTF8 on netstandard2.1+ and net5.0+. Keeps the manual fallback for older targets (netstandard1.1, netstandard2.0, net40, net471, UWP, legacy Xamarin).
1 parent 8d68fdd commit edda0ca

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/LibVLCSharp/Shared/Helpers/MarshalExtensions.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ internal static IntPtr ToUtf8(this string? str)
155155
if (nativeString == IntPtr.Zero)
156156
return null;
157157

158+
#if NETSTANDARD2_1_OR_GREATER || NET5_0_OR_GREATER
159+
var result = Marshal.PtrToStringUTF8(nativeString);
160+
#else
158161
var length = 0;
159162

160163
while (Marshal.ReadByte(nativeString, length) != 0)
@@ -164,9 +167,11 @@ internal static IntPtr ToUtf8(this string? str)
164167

165168
var buffer = new byte[length];
166169
Marshal.Copy(nativeString, buffer, 0, buffer.Length);
170+
var result = Encoding.UTF8.GetString(buffer, 0, buffer.Length);
171+
#endif
167172
if (libvlcFree)
168173
MarshalUtils.LibVLCFree(ref nativeString);
169-
return Encoding.UTF8.GetString(buffer, 0, buffer.Length);
174+
return result;
170175
}
171176

172177
#if !APPLE && !ANDROID && !NETSTANDARD2_1 && !NET40

0 commit comments

Comments
 (0)