diff --git a/gdal/swig/python/scripts/gdal_calc.py b/gdal/swig/python/scripts/gdal_calc.py index 609ac499dacd..d052209237f0 100755 --- a/gdal/swig/python/scripts/gdal_calc.py +++ b/gdal/swig/python/scripts/gdal_calc.py @@ -327,6 +327,8 @@ def doit(opts, args): myval = gdalnumeric.BandReadAsArray(myFiles[i].GetRasterBand(myBandNo), xoff=myX, yoff=myY, win_xsize=nXValid, win_ysize=nYValid) + if myval is None: + raise Exception('Input block reading failed') # fill in nodata values if myNDV[i] is not None: @@ -355,7 +357,14 @@ def doit(opts, args): # write data block to the output file myOutB = myOut.GetRasterBand(bandNo) - gdalnumeric.BandWriteArray(myOutB, myResult, xoff=myX, yoff=myY) + if gdalnumeric.BandWriteArray(myOutB, myResult, xoff=myX, yoff=myY) != 0: + raise Exception('Block writing failed') + + gdal.ErrorReset() + myOut.FlushCache() + myOut = None + if gdal.GetLastErrorMsg() != '': + raise Exception('Dataset writing failed') if not opts.quiet: print("100 - Done")