Skip to content

Error in IBufferWriterExtension Write for unmanaged types #798

@pziezio

Description

@pziezio

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.

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.

IDE and version

VS 2022

IDE version

No response

Nuget packages

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

Nuget package version(s)

8.2.2

Help us help you

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🐛An unexpected issue that highlights incorrect behavior

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions