Skip to content

Commit

Permalink
Stop throwing exception when writing 0 length buffers (#32277)
Browse files Browse the repository at this point in the history
  • Loading branch information
TanayParikh committed Apr 29, 2021
1 parent db8a649 commit 80f0a03
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 4 deletions.
11 changes: 8 additions & 3 deletions src/Mvc/Mvc.ViewFeatures/src/Buffers/ViewBufferTextWriter.cs
Expand Up @@ -110,16 +110,21 @@ public override void Write(char[] buffer, int index, int count)
throw new ArgumentNullException(nameof(buffer));
}

if (index < 0 || index >= buffer.Length)
if (index < 0)
{
throw new ArgumentOutOfRangeException(nameof(index));
}

if (count < 0 || (buffer.Length - index < count))
if (count < 0)
{
throw new ArgumentOutOfRangeException(nameof(count));
}

if (buffer.Length - index < count)
{
throw new ArgumentOutOfRangeException(nameof(buffer.Length));
}

Buffer.AppendHtml(new string(buffer, index, count));
}

Expand Down Expand Up @@ -326,4 +331,4 @@ public override async Task FlushAsync()
await _inner.FlushAsync();
}
}
}
}
Expand Up @@ -124,6 +124,22 @@ public async Task WriteLines_WritesCharBuffer()
Assert.Equal<object>(new[] { newLine, newLine }, actual);
}

[Fact]
public void Write_WritesEmptyCharBuffer()
{
// Arrange
var buffer = new ViewBuffer(new TestViewBufferScope(), "some-name", pageSize: 4);
var writer = new ViewBufferTextWriter(buffer, Encoding.UTF8);
var charBuffer = new char[0];

// Act
writer.Write(charBuffer, 0, 0);

// Assert
var actual = GetValues(buffer);
Assert.Equal<object>(new[] { string.Empty }, actual);
}

[Fact]
public async Task Write_WritesStringBuffer()
{
Expand Down Expand Up @@ -170,4 +186,4 @@ public override string ToString()
}
}
}
}
}

0 comments on commit 80f0a03

Please sign in to comment.