Skip to content

Commit 4a01599

Browse files
committed
Initialize stream reader with default encoding and buffer size values to eliminate exceptions
1 parent 2565ec0 commit 4a01599

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/Microsoft.OpenApi.Readers/OpenApiStreamReader.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using System;
55
using System.IO;
6+
using System.Text;
67
using System.Threading;
78
using System.Threading.Tasks;
89
using Microsoft.OpenApi.Interfaces;
@@ -41,7 +42,7 @@ public OpenApiStreamReader(OpenApiReaderSettings settings = null)
4142
/// <returns>Instance of newly created OpenApiDocument.</returns>
4243
public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
4344
{
44-
using var reader = new StreamReader(input, default, true, -1, _settings.LeaveStreamOpen);
45+
using var reader = new StreamReader(input, Encoding.UTF8, true, 4096, _settings.LeaveStreamOpen);
4546
return new OpenApiTextReaderReader(_settings).Read(reader, out diagnostic);
4647
}
4748

@@ -54,6 +55,7 @@ public OpenApiDocument Read(Stream input, out OpenApiDiagnostic diagnostic)
5455
public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancellationToken = default)
5556
{
5657
MemoryStream bufferedStream;
58+
int bufferSize = 4096;
5759
if (input is MemoryStream stream)
5860
{
5961
bufferedStream = stream;
@@ -63,11 +65,12 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
6365
// Buffer stream so that OpenApiTextReaderReader can process it synchronously
6466
// YamlDocument doesn't support async reading.
6567
bufferedStream = new();
66-
await input.CopyToAsync(bufferedStream, 81920, cancellationToken);
68+
bufferSize = 81920;
69+
await input.CopyToAsync(bufferedStream, bufferSize, cancellationToken);
6770
bufferedStream.Position = 0;
6871
}
6972

70-
using var reader = new StreamReader(bufferedStream, default, true, -1, _settings.LeaveStreamOpen);
73+
using var reader = new StreamReader(bufferedStream, Encoding.UTF8, true, bufferSize, _settings.LeaveStreamOpen);
7174
return await new OpenApiTextReaderReader(_settings).ReadAsync(reader, cancellationToken);
7275
}
7376

@@ -80,7 +83,7 @@ public async Task<ReadResult> ReadAsync(Stream input, CancellationToken cancella
8083
/// <returns>Instance of newly created OpenApiDocument</returns>
8184
public T ReadFragment<T>(Stream input, OpenApiSpecVersion version, out OpenApiDiagnostic diagnostic) where T : IOpenApiReferenceable
8285
{
83-
using var reader = new StreamReader(input, default, true, -1, _settings.LeaveStreamOpen);
86+
using var reader = new StreamReader(input, Encoding.UTF8, true, 4096, _settings.LeaveStreamOpen);
8487
return new OpenApiTextReaderReader(_settings).ReadFragment<T>(reader, version, out diagnostic);
8588
}
8689
}

0 commit comments

Comments
 (0)