From 4bcc2099fe0c86d892c27e12a9bf383d644055b9 Mon Sep 17 00:00:00 2001 From: cristy Date: Fri, 14 Dec 2012 15:54:43 +0000 Subject: [PATCH] --- MagickCore/resize.c | 52 +++++++++++++++++++++++++++++++++------------ 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/MagickCore/resize.c b/MagickCore/resize.c index 224407168..af40db076 100644 --- a/MagickCore/resize.c +++ b/MagickCore/resize.c @@ -2925,14 +2925,6 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, *image_view, *scale_view; - Image - *scale_image; - - MagickBooleanType - next_column, - next_row, - proceed; - double alpha, gamma, @@ -2942,6 +2934,15 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, *x_vector, *y_vector; + Image + *scale_image; + + MagickBooleanType + next_column, + next_row, + proceed, + status; + PixelChannel channel; @@ -3013,6 +3014,7 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, for (i=0; i < (ssize_t) (GetPixelChannels(image)*image->columns); i++) y_vector[i]=0.0; n=0; + status=MagickTrue; image_view=AcquireVirtualCacheView(image,exception); scale_view=AcquireAuthenticCacheView(scale_image,exception); for (y=0; y < (ssize_t) scale_image->rows; y++) @@ -3026,10 +3028,15 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, register ssize_t x; + if (status == MagickFalse) + break; q=QueueCacheViewAuthenticPixels(scale_view,0,y,scale_image->columns,1, exception); if (q == (Quantum *) NULL) - break; + { + status=MagickFalse; + break; + } alpha=1.0; if (scale_image->rows == image->rows) { @@ -3039,7 +3046,10 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, exception); if (p == (const Quantum *) NULL) - break; + { + status=MagickFalse; + break; + } for (x=0; x < (ssize_t) image->columns; x++) { if (GetPixelMask(image,p) != 0) @@ -3083,7 +3093,10 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, exception); if (p == (const Quantum *) NULL) - break; + { + status=MagickFalse; + break; + } for (x=0; x < (ssize_t) image->columns; x++) { if (GetPixelMask(image,p) != 0) @@ -3130,7 +3143,10 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, p=GetCacheViewVirtualPixels(image_view,0,n++,image->columns,1, exception); if (p == (const Quantum *) NULL) - break; + { + status=MagickFalse; + break; + } for (x=0; x < (ssize_t) image->columns; x++) { if (GetPixelMask(image,p) != 0) @@ -3318,11 +3334,17 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, } } if( IfMagickFalse(SyncCacheViewAuthenticPixels(scale_view,exception)) ) - break; + { + status=MagickFalse; + break; + } proceed=SetImageProgress(image,ScaleImageTag,(MagickOffsetType) y, image->rows); if( IfMagickFalse(proceed) ) - break; + { + status=MagickFalse; + break; + } } scale_view=DestroyCacheView(scale_view); image_view=DestroyCacheView(image_view); @@ -3335,6 +3357,8 @@ MagickExport Image *ScaleImage(const Image *image,const size_t columns, scanline=(double *) RelinquishMagickMemory(scanline); x_vector=(double *) RelinquishMagickMemory(x_vector); scale_image->type=image->type; + if (status == MagickFalse) + scale_image=DestroyImage(scale_image); return(scale_image); } -- 2.50.1