@@ -149,18 +149,14 @@ public static async Task<ReadResult> LoadAsync(Stream input, string format = nul
149149 preparedStream . Position = 0 ;
150150 }
151151
152- try
152+ // Use StreamReader to process the prepared stream (buffered for YAML, direct for JSON)
153+ var result = await InternalLoadAsync ( preparedStream , format , settings , cancellationToken ) ;
154+ if ( ! settings . LeaveStreamOpen )
153155 {
154- // Use StreamReader to process the prepared stream (buffered for YAML, direct for JSON)
155- return await InternalLoadAsync ( preparedStream , format , settings , cancellationToken ) ;
156- }
157- finally
158- {
159- if ( ! settings . LeaveStreamOpen )
160- {
161- input . Dispose ( ) ;
162- }
156+ input . Dispose ( ) ;
163157 }
158+
159+ return result ;
164160 }
165161
166162 /// <summary>
@@ -204,13 +200,13 @@ public static T Parse<T>(string input,
204200 return Load < T > ( stream , version , format , out diagnostic , settings ) ;
205201 }
206202
207- private static async Task < ReadResult > InternalLoadAsync ( Stream input , string format , OpenApiReaderSettings settings = null , CancellationToken cancellationToken = default )
203+ private static async Task < ReadResult > InternalLoadAsync ( Stream input , string format , OpenApiReaderSettings settings , CancellationToken cancellationToken = default )
208204 {
209205 Utils . CheckArgumentNull ( format , nameof ( format ) ) ;
210206 var reader = OpenApiReaderRegistry . GetReader ( format ) ;
211207 var readResult = await reader . ReadAsync ( input , settings , cancellationToken ) ;
212208
213- if ( settings is not null && settings . LoadExternalRefs )
209+ if ( settings . LoadExternalRefs )
214210 {
215211 var diagnosticExternalRefs = await LoadExternalRefsAsync ( readResult . OpenApiDocument , cancellationToken , settings , format ) ;
216212 // Merge diagnostics of external reference
@@ -236,10 +232,10 @@ private static async Task<OpenApiDiagnostic> LoadExternalRefsAsync(OpenApiDocume
236232 return await workspaceLoader . LoadAsync ( new OpenApiReference ( ) { ExternalResource = "/" } , document , format ?? OpenApiConstants . Json , null , cancellationToken ) ;
237233 }
238234
239- private static ReadResult InternalLoad ( MemoryStream input , string format , OpenApiReaderSettings settings = null )
235+ private static ReadResult InternalLoad ( MemoryStream input , string format , OpenApiReaderSettings settings )
240236 {
241237 Utils . CheckArgumentNull ( format , nameof ( format ) ) ;
242- if ( settings is not null && settings . LoadExternalRefs )
238+ if ( settings . LoadExternalRefs )
243239 {
244240 throw new InvalidOperationException ( "Loading external references are not supported when using synchronous methods." ) ;
245241 }
0 commit comments