mirror of
https://github.com/dotnet/MQTTnet.git
synced 2026-10-19 19:13:11 +08:00
Fix wrong packet writer buffer length calculation.
This commit is contained in:
@@ -89,6 +89,8 @@ namespace MQTTnet.Serializer
|
||||
|
||||
public void Write(byte[] array, int offset, int count)
|
||||
{
|
||||
if (array == null) throw new ArgumentNullException(nameof(array));
|
||||
|
||||
EnsureAdditionalCapacity(count);
|
||||
|
||||
Array.Copy(array, offset, _buffer, _position, count);
|
||||
@@ -135,17 +137,18 @@ namespace MQTTnet.Serializer
|
||||
return;
|
||||
}
|
||||
|
||||
EnsureCapacity(additionalCapacity - freeSpace);
|
||||
EnsureCapacity(_buffer.Length + additionalCapacity - freeSpace);
|
||||
}
|
||||
|
||||
private void EnsureCapacity(int capacity)
|
||||
{
|
||||
if (_buffer.Length >= capacity)
|
||||
var newBufferLength = _buffer.Length;
|
||||
|
||||
if (newBufferLength >= capacity)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var newBufferLength = _buffer.Length;
|
||||
|
||||
while (newBufferLength < capacity)
|
||||
{
|
||||
newBufferLength *= 2;
|
||||
@@ -157,6 +160,7 @@ namespace MQTTnet.Serializer
|
||||
private void IncreasePostition(int length)
|
||||
{
|
||||
_position += length;
|
||||
|
||||
if (_position > Length)
|
||||
{
|
||||
Length = _position;
|
||||
|
||||
Reference in New Issue
Block a user