@@ -332,18 +332,26 @@ static bool TryEmit(string assetsRelPath, CachedTypeInfo info)
332
332
using ( var fs = new FileStream ( context . OutputPath , FileMode . Create , FileAccess . Write ) )
333
333
{
334
334
//Span<byte> buffer = stackalloc byte[BUFFER_LENGTH];
335
- Span < byte > buffer = ArrayPool < byte > . Shared . Rent ( BUFFER_LENGTH ) . AsSpan ( 0 , BUFFER_LENGTH ) ;
336
- var span = sb . ToString ( ) . AsSpan ( ) ;
337
- int len , written ;
338
- for ( int start = 0 ; start < span . Length ; start += BUFFER_MAX_CHAR_LENGTH )
335
+ var rentBufferToReturn = ArrayPool < byte > . Shared . Rent ( BUFFER_LENGTH ) ;
336
+ try
339
337
{
340
- len = BUFFER_MAX_CHAR_LENGTH ;
341
- if ( len + start > span . Length ) len = span . Length - start ;
338
+ var buffer = rentBufferToReturn . AsSpan ( 0 , BUFFER_LENGTH ) ;
339
+ var span = sb . ToString ( ) . AsSpan ( ) ;
340
+ int len , written ;
341
+ for ( int start = 0 ; start < span . Length ; start += BUFFER_MAX_CHAR_LENGTH )
342
+ {
343
+ len = BUFFER_MAX_CHAR_LENGTH ;
344
+ if ( len + start > span . Length ) len = span . Length - start ;
342
345
343
- written = info . Attribute . OutputFileEncoding . GetBytes ( span . Slice ( start , len ) , buffer ) ;
344
- fs . Write ( buffer . Slice ( 0 , written ) ) ;
346
+ written = info . Attribute . OutputFileEncoding . GetBytes ( span . Slice ( start , len ) , buffer ) ;
347
+ fs . Write ( buffer . Slice ( 0 , written ) ) ;
348
+ }
349
+ fs . Flush ( ) ;
350
+ }
351
+ finally
352
+ {
353
+ ArrayPool < byte > . Shared . Return ( rentBufferToReturn ) ;
345
354
}
346
- fs . Flush ( ) ;
347
355
}
348
356
349
357
#else
0 commit comments