dotnet icon indicating copy to clipboard operation
dotnet copied to clipboard

Error in IBufferWriterExtension Write for unmanaged types

Open pziezio opened this issue 2 years ago • 0 comments

Describe the bug

IBufferWriterExtension.Write method for unmanaged types creates a Span with invalid length:

        int length = sizeof(T);
        Span<byte> span = writer.GetSpan(1);

should be:

        int length = sizeof(T);
        Span<byte> span = writer.GetSpan(length);

That causes System.ArgumentException : The current buffer writer can't contain the requested input data. at runtime.

Regression

No response

Steps to reproduce

Leave only one byte of free capacity and write a larger unmanaged type:

        using var buffer = new ArrayPoolBufferWriter<byte>(16);

        var count = buffer.Capacity - 1;
        for (int i = 0; i < count; i++)
        {
            buffer.Write<byte>(0);
        }

        buffer.Write(1.0);

Expected behavior

It should grow the buffer accordingly.

Screenshots

No response

IDE and version

VS 2022

IDE version

No response

Nuget packages

  • [ ] CommunityToolkit.Common
  • [ ] CommunityToolkit.Diagnostics
  • [x] CommunityToolkit.HighPerformance
  • [ ] CommunityToolkit.Mvvm (aka MVVM Toolkit)

Nuget package version(s)

8.2.2

Additional context

No response

Help us help you

Yes, I'd like to be assigned to work on this item

pziezio avatar Nov 21 '23 12:11 pziezio