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)
{
#if NETSTANDARD1_1
byte[] bytes = buffer.ToArray();
Span<byte> nullChar = stackalloc byte[1] { 0 };
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
string result;
fixed (byte* pointer = &MemoryMarshal.GetReference(buffer))
{
result = Encoding.UTF8.GetString(pointer, buffer.Length);
return Encoding.UTF8.GetString(pointer, buffer.Length);
}
#endif
int nullCharIndex = result.IndexOf('\0');
if (nullCharIndex != -1)
{
result = result.Substring(0, nullCharIndex);
}
return result;
}
/// <summary>

Loading…
Cancel
Save