Fix HttpResponseStreamWriter (#19216)
This commit is contained in:
parent
5a0526dfd9
commit
ee8d8439dd
|
|
@ -135,20 +135,18 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
throw new ObjectDisposedException(nameof(HttpResponseStreamWriter));
|
||||
}
|
||||
|
||||
var written = 0;
|
||||
while (written < value.Length)
|
||||
var remaining = value.Length;
|
||||
while (remaining > 0)
|
||||
{
|
||||
if (_charBufferCount == _charBufferSize)
|
||||
{
|
||||
FlushInternal(flushEncoder: false);
|
||||
}
|
||||
|
||||
written = CopyToCharBuffer(value);
|
||||
|
||||
if (written < value.Length)
|
||||
{
|
||||
value = value.Slice(written);
|
||||
}
|
||||
var written = CopyToCharBuffer(value);
|
||||
|
||||
remaining -= written;
|
||||
value = value.Slice(written);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -339,20 +337,18 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
Debug.Assert(value.Length > 0);
|
||||
Debug.Assert(_charBufferSize - _charBufferCount < value.Length);
|
||||
|
||||
int written = 0;
|
||||
while (written < value.Length)
|
||||
var remaining = value.Length;
|
||||
while (remaining > 0)
|
||||
{
|
||||
if (_charBufferCount == _charBufferSize)
|
||||
{
|
||||
await FlushInternalAsync(flushEncoder: false);
|
||||
}
|
||||
|
||||
written = CopyToCharBuffer(value.Span);
|
||||
|
||||
if (written < value.Length)
|
||||
{
|
||||
value = value.Slice(written);
|
||||
}
|
||||
var written = CopyToCharBuffer(value.Span);
|
||||
|
||||
remaining -= written;
|
||||
value = value.Slice(written);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -389,8 +385,8 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
|
||||
private async Task WriteLineAsyncAwaited(ReadOnlyMemory<char> value)
|
||||
{
|
||||
await WriteAsyncAwaited(value);
|
||||
await WriteAsyncAwaited(NewLine);
|
||||
await WriteAsync(value);
|
||||
await WriteAsync(NewLine);
|
||||
}
|
||||
|
||||
// We want to flush the stream when Flush/FlushAsync is explicitly
|
||||
|
|
|
|||
|
|
@ -258,6 +258,7 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
[InlineData(1024)]
|
||||
[InlineData(1050)]
|
||||
[InlineData(2048)]
|
||||
[InlineData(HttpResponseStreamWriter.DefaultBufferSize + 1)]
|
||||
public void WriteReadOnlySpanChar_WritesToStream(int byteLength)
|
||||
{
|
||||
// Arrange
|
||||
|
|
@ -290,6 +291,7 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
[InlineData(1050, "\r\n")]
|
||||
[InlineData(2046, "\r\n")]
|
||||
[InlineData(2048, "\r\n")]
|
||||
[InlineData(HttpResponseStreamWriter.DefaultBufferSize + 1, "\r\n")]
|
||||
public void WriteLineReadOnlySpanChar_WritesToStream(int byteLength, string newLine)
|
||||
{
|
||||
// Arrange
|
||||
|
|
@ -360,6 +362,7 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
[InlineData(1024)]
|
||||
[InlineData(1050)]
|
||||
[InlineData(2048)]
|
||||
[InlineData(HttpResponseStreamWriter.DefaultBufferSize + 1)]
|
||||
public async Task WriteReadOnlyMemoryAsync_WritesToStream(int byteLength)
|
||||
{
|
||||
// Arrange
|
||||
|
|
@ -412,6 +415,9 @@ namespace Microsoft.AspNetCore.WebUtilities
|
|||
[InlineData(1050, 2)]
|
||||
[InlineData(2046, 2)]
|
||||
[InlineData(2048, 2)]
|
||||
[InlineData(HttpResponseStreamWriter.DefaultBufferSize + 1, 1)]
|
||||
[InlineData(HttpResponseStreamWriter.DefaultBufferSize + 1, 2)]
|
||||
[InlineData(HttpResponseStreamWriter.DefaultBufferSize + 1, HttpResponseStreamWriter.DefaultBufferSize)]
|
||||
public async Task WriteLineReadOnlyMemoryAsync_WritesToStream(int byteLength, int newLineLength)
|
||||
{
|
||||
// Arrange
|
||||
|
|
|
|||
Loading…
Reference in New Issue