Ticket #2199: gdal_svn_trunk_fix2199.patch
| File gdal_svn_trunk_fix2199.patch, 3.8 kB (added by rouault, 3 months ago) |
|---|
-
gcore/rasterio.cpp
old new 107 107 if( eDataType == eBufType ) 108 108 { 109 109 if( eRWFlag == GF_Read ) 110 memcpy( ((GByte *) pData) + iBufYOff * nLineSpace,110 memcpy( ((GByte *) pData) + (size_t)iBufYOff * nLineSpace, 111 111 pabySrcBlock + nSrcByteOffset, 112 112 nLineSpace ); 113 113 else 114 114 memcpy( pabySrcBlock + nSrcByteOffset, 115 ((GByte *) pData) + iBufYOff * nLineSpace,115 ((GByte *) pData) + (size_t)iBufYOff * nLineSpace, 116 116 nLineSpace ); 117 117 } 118 118 else … … 122 122 if( eRWFlag == GF_Read ) 123 123 GDALCopyWords( pabySrcBlock + nSrcByteOffset, 124 124 eDataType, nBandDataSize, 125 ((GByte *) pData) + iBufYOff * nLineSpace,125 ((GByte *) pData) + (size_t)iBufYOff * nLineSpace, 126 126 eBufType, nPixelSpace, nBufXSize ); 127 127 else 128 GDALCopyWords( ((GByte *) pData) + iBufYOff * nLineSpace,128 GDALCopyWords( ((GByte *) pData) + (size_t)iBufYOff * nLineSpace, 129 129 eBufType, nPixelSpace, 130 130 pabySrcBlock + nSrcByteOffset, 131 131 eDataType, nBandDataSize, nBufXSize ); … … 176 176 177 177 for( iBufYOff = 0, iSrcY = nYOff; iBufYOff < nBufYSize; iBufYOff++, iSrcY++ ) 178 178 { 179 int iBufOffset, iSrcOffset, nXSpan; 180 181 iBufOffset = iBufYOff * nLineSpace; 179 size_t iBufOffset, iSrcOffset; 180 int nXSpan; 181 182 iBufOffset = (size_t)iBufYOff * nLineSpace; 182 183 nLBlockY = iSrcY / nBlockYSize; 183 184 nLBlockX = nLBlockXStart; 184 185 iSrcX = nXOff; … … 229 230 /* -------------------------------------------------------------------- */ 230 231 /* Copy over this chunk of data. */ 231 232 /* -------------------------------------------------------------------- */ 232 iSrcOffset = ( iSrcX -nLBlockX*nBlockXSize233 + ( iSrcY -nLBlockY*nBlockYSize) * nBlockXSize)*nBandDataSize;233 iSrcOffset = ((size_t)iSrcX - (size_t)nLBlockX*nBlockXSize 234 + ((size_t)iSrcY - (size_t)nLBlockY*nBlockYSize) * nBlockXSize)*nBandDataSize; 234 235 235 236 if( eDataType == eBufType 236 237 && nPixelSpace == nBufDataSize ) … … 293 294 294 295 for( iBufYOff = 0; iBufYOff < nBufYSize; iBufYOff++ ) 295 296 { 296 intiBufOffset, iSrcOffset;297 size_t iBufOffset, iSrcOffset; 297 298 298 299 dfSrcY = (iBufYOff+0.5) * dfSrcYInc + nYOff; 299 300 iSrcY = (int) dfSrcY; 300 301 301 iBufOffset = iBufYOff * nLineSpace;302 iBufOffset = (size_t)iBufYOff * nLineSpace; 302 303 303 304 for( iBufXOff = 0; iBufXOff < nBufXSize; iBufXOff++ ) 304 305 { … … 348 349 /* -------------------------------------------------------------------- */ 349 350 /* Copy over this pixel of data. */ 350 351 /* -------------------------------------------------------------------- */ 351 iSrcOffset = ( iSrcX -nLBlockX*nBlockXSize352 + ( iSrcY -nLBlockY*nBlockYSize) * nBlockXSize)*nBandDataSize;352 iSrcOffset = ((size_t)iSrcX - (size_t)nLBlockX*nBlockXSize 353 + ((size_t)iSrcY - (size_t)nLBlockY*nBlockYSize) * nBlockXSize)*nBandDataSize; 353 354 354 355 if( eDataType == eBufType ) 355 356 {
