Fix the double buffer rent/free (#921)

* Fix the double buffer rent/free

* Fix the double cast to span
This commit is contained in:
Tim Seaward 2017-09-21 07:30:59 +01:00 committed by David Fowler
parent dd07ab1735
commit f71e31a1cd
1 changed files with 7 additions and 7 deletions

View File

@ -14,14 +14,14 @@ namespace Microsoft.AspNetCore.SignalR.Internal.Formatters
{
// TODO: Optimize for size - (e.g. use Varints)
var length = sizeof(long);
var buffer = ArrayPool<byte>.Shared.Rent(length);
BufferWriter.WriteBigEndian<long>(buffer, payload.Length);
output.Write(buffer, 0, length);
ArrayPool<byte>.Shared.Return(buffer);
var buffer = ArrayPool<byte>.Shared.Rent(length + payload.Length);
var bufferSpan = buffer.AsSpan();
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);
}
}