Browse Source

Use Encoding.UTF8 overload accepting span

af/merge-core
Jason Nelson 8 years ago
parent
commit
3ea3c093ce
  1. 23
      src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs

23
src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs

@ -140,26 +140,27 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Exif
private unsafe string ConvertToString(ReadOnlySpan<byte> buffer) private unsafe string ConvertToString(ReadOnlySpan<byte> buffer)
{ {
#if NETSTANDARD1_1 Span<byte> nullChar = stackalloc byte[1] { 0 };
byte[] bytes = buffer.ToArray();
string result = Encoding.UTF8.GetString(bytes, 0, buffer.Length); int nullCharIndex = buffer.IndexOf(nullChar);
if (nullCharIndex > -1)
{
buffer = buffer.Slice(0, nullCharIndex);
}
#if NETSTANDARD1_1
return Encoding.UTF8.GetString(buffer.ToArray(), 0, buffer.Length);
#elif NETCOREAPP2_1
return Encoding.UTF8.GetString(buffer);
#else #else
string result; string result;
fixed (byte* pointer = &MemoryMarshal.GetReference(buffer)) fixed (byte* pointer = &MemoryMarshal.GetReference(buffer))
{ {
result = Encoding.UTF8.GetString(pointer, buffer.Length); return Encoding.UTF8.GetString(pointer, buffer.Length);
} }
#endif #endif
int nullCharIndex = result.IndexOf('\0');
if (nullCharIndex != -1)
{
result = result.Substring(0, nullCharIndex);
}
return result;
} }
/// <summary> /// <summary>

Loading…
Cancel
Save