Browse Source

Use Encoding.GetString(ROS<byte>) polyfill

pull/720/head
Jason Nelson 8 years ago
parent
commit
bb37823dc2
  1. 2
      src/ImageSharp/Formats/Png/PngDecoderCore.cs
  2. 13
      src/ImageSharp/MetaData/Profiles/Exif/ExifReader.cs

2
src/ImageSharp/Formats/Png/PngDecoderCore.cs

@ -1016,7 +1016,7 @@ namespace SixLabors.ImageSharp.Formats.Png
if (this.crc.Value != chunk.Crc) if (this.crc.Value != chunk.Crc)
{ {
string chunkTypeName = Encoding.UTF8.GetString(chunkType.ToArray(), 0, 4); string chunkTypeName = Encoding.UTF8.GetString(chunkType);
throw new ImageFormatException($"CRC Error. PNG {chunkTypeName} chunk is corrupt!"); throw new ImageFormatException($"CRC Error. PNG {chunkTypeName} chunk is corrupt!");
} }

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

@ -127,25 +127,14 @@ namespace SixLabors.ImageSharp.MetaData.Profiles.Exif
private unsafe string ConvertToString(ReadOnlySpan<byte> buffer) private unsafe string ConvertToString(ReadOnlySpan<byte> buffer)
{ {
Span<byte> nullChar = stackalloc byte[1] { 0 }; int nullCharIndex = buffer.IndexOf((byte)0);
int nullCharIndex = buffer.IndexOf(nullChar);
if (nullCharIndex > -1) if (nullCharIndex > -1)
{ {
buffer = buffer.Slice(0, nullCharIndex); 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); return Encoding.UTF8.GetString(buffer);
#else
fixed (byte* pointer = &MemoryMarshal.GetReference(buffer))
{
return Encoding.UTF8.GetString(pointer, buffer.Length);
}
#endif
} }
/// <summary> /// <summary>

Loading…
Cancel
Save