Browse Source

Explicitly control lifetime of memory owner

pull/1918/head
Ynse Hoornenborg 4 years ago
parent
commit
c05fd216d1
  1. 15
      src/ImageSharp/Formats/Png/PngEncoderCore.cs

15
src/ImageSharp/Formats/Png/PngEncoderCore.cs

@ -680,12 +680,15 @@ namespace SixLabors.ImageSharp.Formats.Png
return;
}
using IMemoryOwner<byte> owner = this.memoryAllocator.Allocate<byte>(xmpData.Length + PngConstants.XmpKeyword.Length + 5);
Span<byte> payload = owner.GetSpan();
PngConstants.XmpKeyword.CopyTo(payload);
int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize;
xmpData.CopyTo(payload.Slice(bytesWritten));
this.WriteChunk(stream, PngChunkType.InternationalText, payload);
int payloadLength = xmpData.Length + PngConstants.XmpKeyword.Length + 5;
using (IMemoryOwner<byte> owner = this.memoryAllocator.Allocate<byte>(payloadLength))
{
Span<byte> payload = owner.GetSpan();
PngConstants.XmpKeyword.CopyTo(payload);
int bytesWritten = PngConstants.XmpKeyword.Length + iTxtHeaderSize;
xmpData.CopyTo(payload.Slice(bytesWritten));
this.WriteChunk(stream, PngChunkType.InternationalText, payload);
}
}
/// <summary>

Loading…
Cancel
Save