@@ -257,31 +257,23 @@ public void Apply<TResult>(Func<T?, TResult?> func, PrimitiveColumnContainer<TRe
257257 {
258258 for ( int b = 0 ; b < Buffers . Count ; b ++ )
259259 {
260- ReadOnlyDataFrameBuffer < T > buffer = Buffers [ b ] ;
261- long prevLength = checked ( Buffers [ 0 ] . Length * b ) ;
262- DataFrameBuffer < T > mutableBuffer = DataFrameBuffer < T > . GetMutableBuffer ( buffer ) ;
263- Buffers [ b ] = mutableBuffer ;
264- Span < T > span = mutableBuffer . Span ;
265- DataFrameBuffer < byte > mutableNullBitMapBuffer = DataFrameBuffer < byte > . GetMutableBuffer ( NullBitMapBuffers [ b ] ) ;
266- NullBitMapBuffers [ b ] = mutableNullBitMapBuffer ;
267- Span < byte > nullBitMapSpan = mutableNullBitMapBuffer . Span ;
260+ ReadOnlyDataFrameBuffer < T > sourceBuffer = Buffers [ b ] ;
261+ ReadOnlySpan < byte > sourceNullBitMap = NullBitMapBuffers [ b ] . ReadOnlySpan ;
268262
269263 ReadOnlyDataFrameBuffer < TResult > resultBuffer = resultContainer . Buffers [ b ] ;
270- long resultPrevLength = checked ( resultContainer . Buffers [ 0 ] . Length * b ) ;
271264 DataFrameBuffer < TResult > resultMutableBuffer = DataFrameBuffer < TResult > . GetMutableBuffer ( resultBuffer ) ;
272265 resultContainer . Buffers [ b ] = resultMutableBuffer ;
273266 Span < TResult > resultSpan = resultMutableBuffer . Span ;
274267 DataFrameBuffer < byte > resultMutableNullBitMapBuffer = DataFrameBuffer < byte > . GetMutableBuffer ( resultContainer . NullBitMapBuffers [ b ] ) ;
275268 resultContainer . NullBitMapBuffers [ b ] = resultMutableNullBitMapBuffer ;
276269 Span < byte > resultNullBitMapSpan = resultMutableNullBitMapBuffer . Span ;
277270
278- for ( int i = 0 ; i < span . Length ; i ++ )
271+ for ( int i = 0 ; i < Buffers [ b ] . Length ; i ++ )
279272 {
280- long curIndex = i + prevLength ;
281- bool isValid = IsValid ( nullBitMapSpan , i ) ;
282- TResult ? value = func ( isValid ? span [ i ] : default ( T ? ) ) ;
273+ bool isValid = IsValid ( sourceNullBitMap , i ) ;
274+ TResult ? value = func ( isValid ? sourceBuffer [ i ] : default ( T ? ) ) ;
283275 resultSpan [ i ] = value . GetValueOrDefault ( ) ;
284- SetValidityBit ( resultNullBitMapSpan , i , value != null ) ;
276+ resultContainer . SetValidityBit ( resultNullBitMapSpan , i , value != null ) ;
285277 }
286278 }
287279 }
0 commit comments