@@ -764,10 +764,12 @@ private void DecodePixelData<TPixel>(
764764 {
765765 cancellationToken . ThrowIfCancellationRequested ( ) ;
766766 int bytesPerFrameScanline = this . CalculateScanlineLength ( ( int ) frameControl . Width ) + 1 ;
767- Span < byte > scanlineSpan = this . scanline . GetSpan ( ) [ ..bytesPerFrameScanline ] ;
767+ Span < byte > scanSpan = this . scanline . GetSpan ( ) [ ..bytesPerFrameScanline ] ;
768+ Span < byte > prevSpan = this . scanline . GetSpan ( ) [ ..bytesPerFrameScanline ] ;
769+
768770 while ( currentRowBytesRead < bytesPerFrameScanline )
769771 {
770- int bytesRead = compressedStream . Read ( scanlineSpan , currentRowBytesRead , bytesPerFrameScanline - currentRowBytesRead ) ;
772+ int bytesRead = compressedStream . Read ( scanSpan , currentRowBytesRead , bytesPerFrameScanline - currentRowBytesRead ) ;
771773 if ( bytesRead <= 0 )
772774 {
773775 return ;
@@ -778,33 +780,33 @@ private void DecodePixelData<TPixel>(
778780
779781 currentRowBytesRead = 0 ;
780782
781- switch ( ( FilterType ) scanlineSpan [ 0 ] )
783+ switch ( ( FilterType ) scanSpan [ 0 ] )
782784 {
783785 case FilterType . None :
784786 break ;
785787
786788 case FilterType . Sub :
787- SubFilter . Decode ( scanlineSpan , this . bytesPerPixel ) ;
789+ SubFilter . Decode ( scanSpan , this . bytesPerPixel ) ;
788790 break ;
789791
790792 case FilterType . Up :
791- UpFilter . Decode ( scanlineSpan , this . previousScanline . GetSpan ( ) ) ;
793+ UpFilter . Decode ( scanSpan , prevSpan ) ;
792794 break ;
793795
794796 case FilterType . Average :
795- AverageFilter . Decode ( scanlineSpan , this . previousScanline . GetSpan ( ) , this . bytesPerPixel ) ;
797+ AverageFilter . Decode ( scanSpan , prevSpan , this . bytesPerPixel ) ;
796798 break ;
797799
798800 case FilterType . Paeth :
799- PaethFilter . Decode ( scanlineSpan , this . previousScanline . GetSpan ( ) , this . bytesPerPixel ) ;
801+ PaethFilter . Decode ( scanSpan , prevSpan , this . bytesPerPixel ) ;
800802 break ;
801803
802804 default :
803805 PngThrowHelper . ThrowUnknownFilter ( ) ;
804806 break ;
805807 }
806808
807- this . ProcessDefilteredScanline ( frameControl , currentRow , scanlineSpan , imageFrame , pngMetadata , blendRowBuffer ) ;
809+ this . ProcessDefilteredScanline ( frameControl , currentRow , scanSpan , imageFrame , pngMetadata , blendRowBuffer ) ;
808810 this . SwapScanlineBuffers ( ) ;
809811 currentRow ++ ;
810812 }
0 commit comments