Fix the double buffer rent/free (#921)
* Fix the double buffer rent/free * Fix the double cast to span
This commit is contained in:
parent
dd07ab1735
commit
f71e31a1cd
|
|
@ -14,14 +14,14 @@ namespace Microsoft.AspNetCore.SignalR.Internal.Formatters
|
||||||
{
|
{
|
||||||
// TODO: Optimize for size - (e.g. use Varints)
|
// TODO: Optimize for size - (e.g. use Varints)
|
||||||
var length = sizeof(long);
|
var length = sizeof(long);
|
||||||
var buffer = ArrayPool<byte>.Shared.Rent(length);
|
var buffer = ArrayPool<byte>.Shared.Rent(length + payload.Length);
|
||||||
BufferWriter.WriteBigEndian<long>(buffer, payload.Length);
|
var bufferSpan = buffer.AsSpan();
|
||||||
output.Write(buffer, 0, length);
|
|
||||||
ArrayPool<byte>.Shared.Return(buffer);
|
BufferWriter.WriteBigEndian<long>(bufferSpan, payload.Length);
|
||||||
|
bufferSpan = bufferSpan.Slice(length);
|
||||||
|
payload.CopyTo(bufferSpan);
|
||||||
|
output.Write(buffer, 0, payload.Length + length);
|
||||||
|
|
||||||
buffer = ArrayPool<byte>.Shared.Rent(payload.Length);
|
|
||||||
payload.CopyTo(buffer);
|
|
||||||
output.Write(buffer, 0, payload.Length);
|
|
||||||
ArrayPool<byte>.Shared.Return(buffer);
|
ArrayPool<byte>.Shared.Return(buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue