From c82a27bb8e3138ff9bbf0f696663bdf3e704cede Mon Sep 17 00:00:00 2001 From: cristy Date: Fri, 21 Oct 2011 01:07:16 +0000 Subject: [PATCH] --- Magick++/lib/Image.cpp | 36 ++--- Magick++/lib/ImageRef.cpp | 8 +- Magick++/lib/Magick++/Include.h | 1 - Magick++/lib/Magick++/STL.h | 12 +- MagickCore/blob.c | 16 +- MagickCore/blob.h | 2 +- MagickCore/cache-view.c | 46 +----- MagickCore/cache-view.h | 5 +- MagickCore/cache.c | 4 +- MagickCore/colormap-private.h | 7 +- MagickCore/colormap.c | 2 +- MagickCore/compare.c | 4 +- MagickCore/compress.c | 2 +- MagickCore/constitute.c | 1 - MagickCore/enhance.c | 2 +- MagickCore/exception.c | 36 +++++ MagickCore/exception.h | 1 + MagickCore/fx.c | 1 - MagickCore/image.c | 51 ------- MagickCore/image.h | 4 - MagickCore/paint.c | 2 +- MagickCore/pixel.c | 4 +- MagickCore/prepress.c | 4 +- MagickCore/property.c | 33 +++-- MagickCore/segment.c | 2 +- MagickCore/stream.c | 8 +- MagickCore/stream.h | 2 +- MagickWand/compare.c | 2 +- MagickWand/composite.c | 2 - MagickWand/display.c | 6 +- MagickWand/mogrify-private.h | 5 +- MagickWand/montage.c | 1 - MagickWand/pixel-iterator.c | 7 +- PerlMagick/Magick.xs | 7 +- coders/bgr.c | 1 - coders/bmp.c | 8 +- coders/caption.c | 1 - coders/cmyk.c | 1 - coders/cut.c | 42 +++--- coders/dcm.c | 6 +- coders/dds.c | 49 +++---- coders/dib.c | 8 +- coders/djvu.c | 15 +- coders/exr.c | 2 +- coders/gif.c | 9 +- coders/gray.c | 1 - coders/jpeg.c | 17 ++- coders/label.c | 2 - coders/map.c | 5 +- coders/mat.c | 21 +-- coders/miff.c | 33 +++-- coders/msl.c | 128 ++++++++-------- coders/palm.c | 4 +- coders/pcd.c | 19 ++- coders/pcl.c | 2 +- coders/pdb.c | 12 +- coders/pict.c | 14 +- coders/plasma.c | 24 ++- coders/png.c | 252 +++++++++++++++++--------------- coders/pnm.c | 14 +- coders/ps.c | 2 +- coders/ps3.c | 8 +- coders/psd.c | 21 ++- coders/raw.c | 1 - coders/rgb.c | 1 - coders/sfw.c | 4 +- coders/svg.c | 9 +- coders/tga.c | 4 +- coders/tiff.c | 2 +- coders/webp.c | 4 +- coders/wpg.c | 50 +++---- coders/xcf.c | 27 ++-- coders/xps.c | 2 +- coders/xwd.c | 2 +- coders/ycbcr.c | 1 - coders/yuv.c | 2 +- 76 files changed, 533 insertions(+), 623 deletions(-) diff --git a/Magick++/lib/Image.cpp b/Magick++/lib/Image.cpp index a142e0cf0..7dcd62832 100644 --- a/Magick++/lib/Image.cpp +++ b/Magick++/lib/Image.cpp @@ -849,8 +849,7 @@ void Magick::Image::draw ( const Magick::Drawable &drawable_ ) { drawable_.operator()(wand); - if( constImage()->exception.severity == UndefinedException) - DrawRender(wand); + DrawRender(wand); wand=DestroyDrawingWand(wand); } @@ -871,12 +870,9 @@ void Magick::Image::draw ( const std::list &drawable_ ) p != drawable_.end(); p++ ) { p->operator()(wand); - if( constImage()->exception.severity != UndefinedException) - break; } - if( constImage()->exception.severity == UndefinedException) - DrawRender(wand); + DrawRender(wand); wand=DestroyDrawingWand(wand); } @@ -1561,12 +1557,13 @@ void Magick::Image::process( std::string name_, const ssize_t argc, const char * { modifyImage(); + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); size_t status = InvokeDynamicImageFilter( name_.c_str(), &image(), argc, argv, - &image()->exception ); - - if (status == false) - throwException( image()->exception ); + &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } // Quantize colors in image using current quantization settings @@ -1695,8 +1692,6 @@ void Magick::Image::read ( const std::string &imageSpec_ ) } replaceImage( image ); throwException( exceptionInfo ); - if ( image ) - throwException( image->exception ); (void) DestroyExceptionInfo( &exceptionInfo ); } @@ -1719,8 +1714,6 @@ void Magick::Image::read ( const Blob &blob_ ) blob_.length(), &exceptionInfo ); replaceImage( image ); throwException( exceptionInfo ); - if ( image ) - throwException( image->exception ); (void) DestroyExceptionInfo( &exceptionInfo ); } @@ -1794,8 +1787,6 @@ void Magick::Image::read ( const size_t width_, &exceptionInfo ); replaceImage( image ); throwException( exceptionInfo ); - if ( image ) - throwException( image->exception ); (void) DestroyExceptionInfo( &exceptionInfo ); } @@ -2185,10 +2176,10 @@ void Magick::Image::transparent ( const Color &color_ ) std::string color = color_; PixelInfo target; - (void) QueryColorCompliance(std::string(color_).c_str(),AllCompliance, - &target,&image()->exception); ExceptionInfo exceptionInfo; GetExceptionInfo( &exceptionInfo ); + (void) QueryColorCompliance(std::string(color_).c_str(),AllCompliance, + &target,&exceptionInfo); modifyImage(); TransparentPaintImage ( image(), &target, TransparentAlpha, MagickFalse, &exceptionInfo ); @@ -2211,12 +2202,12 @@ void Magick::Image::transparentChroma(const Color &colorLow_, PixelInfo targetLow; PixelInfo targetHigh; - (void) QueryColorCompliance(std::string(colorLow_).c_str(), - AllCompliance,&targetLow,&image()->exception); - (void) QueryColorCompliance(std::string(colorHigh_).c_str(), - AllCompliance,&targetHigh,&image()->exception); ExceptionInfo exceptionInfo; GetExceptionInfo( &exceptionInfo ); + (void) QueryColorCompliance(std::string(colorLow_).c_str(), + AllCompliance,&targetLow,&exceptionInfo); + (void) QueryColorCompliance(std::string(colorHigh_).c_str(), + AllCompliance,&targetHigh,&exceptionInfo); modifyImage(); TransparentPaintImageChroma ( image(), &targetLow, &targetHigh, TransparentAlpha, MagickFalse, &exceptionInfo ); @@ -4436,7 +4427,6 @@ void Magick::Image::modifyImage( void ) void Magick::Image::throwImageException( void ) const { // Throw C++ exception while resetting Image exception to default state - throwException( const_cast(constImage())->exception ); } // Register image with image registry or obtain registration id diff --git a/Magick++/lib/ImageRef.cpp b/Magick++/lib/ImageRef.cpp index 3812681c7..a5445cc83 100644 --- a/Magick++/lib/ImageRef.cpp +++ b/Magick++/lib/ImageRef.cpp @@ -46,10 +46,12 @@ Magick::ImageRef::ImageRef ( void ) _mutexLock() { // Allocate default image - _image = AcquireImage( _options->imageInfo(), &_image->exception ); + ExceptionInfo exceptionInfo; + GetExceptionInfo( &exceptionInfo ); - // Test for error and throw exception (like throwImageException()) - throwException(_image->exception); + _image = AcquireImage( _options->imageInfo(), &exceptionInfo ); + throwException( exceptionInfo ); + (void) DestroyExceptionInfo( &exceptionInfo ); } // Destructor diff --git a/Magick++/lib/Magick++/Include.h b/Magick++/lib/Magick++/Include.h index 7f3b6d6f1..a5b1fe79f 100644 --- a/Magick++/lib/Magick++/Include.h +++ b/Magick++/lib/Magick++/Include.h @@ -728,7 +728,6 @@ namespace Magick using MagickCore::GetAffineMatrix; using MagickCore::GetAuthenticMetacontent; using MagickCore::GetBlobSize; - using MagickCore::GetCacheViewException; using MagickCore::GetCacheViewAuthenticMetacontent; using MagickCore::GetCacheViewAuthenticPixels; using MagickCore::GetColorTuple; diff --git a/Magick++/lib/Magick++/STL.h b/Magick++/lib/Magick++/STL.h index 5f3f7513e..5612ecbec 100644 --- a/Magick++/lib/Magick++/STL.h +++ b/Magick++/lib/Magick++/STL.h @@ -1904,7 +1904,6 @@ namespace Magick MagickCore::GetExceptionInfo( &exceptionInfo ); linkImages( first_, last_ ); MagickCore::AnimateImages( first_->imageInfo(), first_->image() ); - MagickCore::GetImageException( first_->image(), &exceptionInfo ); unlinkImages( first_, last_ ); throwException( exceptionInfo ); (void) MagickCore::DestroyExceptionInfo( &exceptionInfo ); @@ -2161,7 +2160,6 @@ namespace Magick MagickCore::GetExceptionInfo( &exceptionInfo ); linkImages( first_, last_ ); MagickCore::DisplayImages( first_->imageInfo(), first_->image() ); - MagickCore::GetImageException( first_->image(), &exceptionInfo ); unlinkImages( first_, last_ ); throwException( exceptionInfo ); (void) MagickCore::DestroyExceptionInfo( &exceptionInfo ); @@ -2247,7 +2245,6 @@ namespace Magick linkImages( first_, last_ ); MagickCore::RemapImages( &quantizeInfo, first_->image(), mapImage_.constImage()); - MagickCore::GetImageException( first_->image(), &exceptionInfo ); if ( exceptionInfo.severity != MagickCore::UndefinedException ) { unlinkImages( first_, last_ ); @@ -2272,11 +2269,8 @@ namespace Magick // Udate DirectClass representation of pixels MagickCore::SyncImage( image, &exceptionInfo ); - if ( image->exception.severity > MagickCore::UndefinedException ) - { - unlinkImages( first_, last_ ); - throwException( exceptionInfo ); - } + unlinkImages( first_, last_ ); + throwException( exceptionInfo ); (void) MagickCore::DestroyExceptionInfo( &exceptionInfo ); // Next image @@ -2337,7 +2331,6 @@ namespace Magick } // Report any transparentImage() error - MagickCore::GetImageException( first_->image(), &exceptionInfo ); throwException( exceptionInfo ); (void) MagickCore::DestroyExceptionInfo( &exceptionInfo ); } @@ -2398,7 +2391,6 @@ namespace Magick MagickCore::QuantizeImages( first_->quantizeInfo(), first_->image() ); - MagickCore::GetImageException( first_->image(), &exceptionInfo ); if ( exceptionInfo.severity > MagickCore::UndefinedException ) { unlinkImages( first_, last_ ); diff --git a/MagickCore/blob.c b/MagickCore/blob.c index 2e345af23..b0534fc1c 100644 --- a/MagickCore/blob.c +++ b/MagickCore/blob.c @@ -1088,7 +1088,8 @@ static inline ssize_t WriteBlobStream(Image *image,const size_t length, return((ssize_t) length); } -MagickExport MagickBooleanType FileToImage(Image *image,const char *filename) +MagickExport MagickBooleanType FileToImage(Image *image,const char *filename, + ExceptionInfo *exception) { int file; @@ -1113,8 +1114,7 @@ MagickExport MagickBooleanType FileToImage(Image *image,const char *filename) file=open_utf8(filename,O_RDONLY | O_BINARY,0); if (file == -1) { - ThrowFileException(&image->exception,BlobError,"UnableToOpenBlob", - filename); + ThrowFileException(exception,BlobError,"UnableToOpenBlob",filename); return(MagickFalse); } quantum=(size_t) MagickMaxBufferExtent; @@ -1123,8 +1123,8 @@ MagickExport MagickBooleanType FileToImage(Image *image,const char *filename) blob=(unsigned char *) AcquireQuantumMemory(quantum,sizeof(*blob)); if (blob == (unsigned char *) NULL) { - ThrowFileException(&image->exception,ResourceLimitError, - "MemoryAllocationFailed",filename); + ThrowFileException(exception,ResourceLimitError,"MemoryAllocationFailed", + filename); return(MagickFalse); } for ( ; ; ) @@ -1140,15 +1140,13 @@ MagickExport MagickBooleanType FileToImage(Image *image,const char *filename) count=WriteBlobStream(image,length,blob); if (count != (ssize_t) length) { - ThrowFileException(&image->exception,BlobError,"UnableToWriteBlob", - filename); + ThrowFileException(exception,BlobError,"UnableToWriteBlob",filename); break; } } file=close(file); if (file == -1) - ThrowFileException(&image->exception,BlobError,"UnableToWriteBlob", - filename); + ThrowFileException(exception,BlobError,"UnableToWriteBlob",filename); blob=(unsigned char *) RelinquishMagickMemory(blob); return(MagickTrue); } diff --git a/MagickCore/blob.h b/MagickCore/blob.h index 0c5508321..d9d7aaf95 100644 --- a/MagickCore/blob.h +++ b/MagickCore/blob.h @@ -76,7 +76,7 @@ extern MagickExport MagickBooleanType BlobToFile(char *,const void *,const size_t,ExceptionInfo *), CloseBlob(Image *), DiscardBlobBytes(Image *,const MagickSizeType), - FileToImage(Image *,const char *), + FileToImage(Image *,const char *,ExceptionInfo *), ImageToFile(Image *,char *,ExceptionInfo *), InjectImageBlob(const ImageInfo *,Image *,Image *,const char *, ExceptionInfo *), diff --git a/MagickCore/cache-view.c b/MagickCore/cache-view.c index 05ce877a1..56364bd57 100644 --- a/MagickCore/cache-view.c +++ b/MagickCore/cache-view.c @@ -250,39 +250,6 @@ MagickExport ColorspaceType GetCacheViewColorspace(const CacheView *cache_view) % % % % % % -% G e t C a c h e V i e w E x c e p t i o n % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% GetCacheViewException() returns the image exception associated with the -% specified view. -% -% The format of the GetCacheViewException method is: -% -% ExceptionInfo GetCacheViewException(const CacheView *cache_view) -% -% A description of each parameter follows: -% -% o cache_view: the cache view. -% -*/ -MagickExport ExceptionInfo *GetCacheViewException(const CacheView *cache_view) -{ - assert(cache_view != (CacheView *) NULL); - assert(cache_view->signature == MagickSignature); - if (cache_view->debug != MagickFalse) - (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", - cache_view->image->filename); - return(&cache_view->image->exception); -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % + G e t C a c h e V i e w E x t e n t % % % % % @@ -905,7 +872,7 @@ MagickExport Quantum *QueueCacheViewAuthenticPixels(CacheView *cache_view, % The format of the SetCacheViewStorageClass method is: % % MagickBooleanType SetCacheViewStorageClass(CacheView *cache_view, -% const ClassType storage_class) +% const ClassType storage_class,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -913,21 +880,18 @@ MagickExport Quantum *QueueCacheViewAuthenticPixels(CacheView *cache_view, % % o storage_class: the image storage class: PseudoClass or DirectClass. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType SetCacheViewStorageClass(CacheView *cache_view, - const ClassType storage_class) + const ClassType storage_class,ExceptionInfo *exception) { - MagickBooleanType - status; - assert(cache_view != (CacheView *) NULL); assert(cache_view->signature == MagickSignature); if (cache_view->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s", cache_view->image->filename); - status=SetImageStorageClass(cache_view->image,storage_class, - &cache_view->image->exception); - return(status); + return(SetImageStorageClass(cache_view->image,storage_class,exception)); } /* diff --git a/MagickCore/cache-view.h b/MagickCore/cache-view.h index abb99b4cc..1f97503c7 100644 --- a/MagickCore/cache-view.h +++ b/MagickCore/cache-view.h @@ -67,9 +67,6 @@ extern MagickExport const Quantum extern MagickExport const void *GetCacheViewVirtualMetacontent(const CacheView *); -extern MagickExport ExceptionInfo - *GetCacheViewException(const CacheView *); - extern MagickExport MagickBooleanType GetOneCacheViewVirtualPixel(const CacheView *,const ssize_t,const ssize_t, Quantum *,ExceptionInfo *), @@ -77,7 +74,7 @@ extern MagickExport MagickBooleanType const ssize_t,const ssize_t,Quantum *,ExceptionInfo *), GetOneCacheViewAuthenticPixel(const CacheView *,const ssize_t,const ssize_t, Quantum *,ExceptionInfo *), - SetCacheViewStorageClass(CacheView *,const ClassType), + SetCacheViewStorageClass(CacheView *,const ClassType,ExceptionInfo *), SetCacheViewVirtualPixelMethod(CacheView *,const VirtualPixelMethod), SyncCacheViewAuthenticPixels(CacheView *,ExceptionInfo *); diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 41acfbedd..3578977dc 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -3932,7 +3932,7 @@ static MagickBooleanType MaskPixelCacheNexus(Image *image,NexusInfo *nexus_info, q=nexus_info->pixels; r=GetVirtualPixelsFromNexus(image->mask,MaskVirtualPixelMethod, nexus_info->region.x,nexus_info->region.y,nexus_info->region.width, - nexus_info->region.height,clip_nexus[0],&image->exception); + nexus_info->region.height,clip_nexus[0],exception); GetPixelInfo(image,&alpha); GetPixelInfo(image,&beta); number_pixels=(MagickSizeType) nexus_info->region.width* @@ -4390,7 +4390,7 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, cache_info=(CacheInfo *) image->cache; status=OpenPixelCache(image,IOMode,exception); if (status != MagickFalse) - status=ClonePixelCachePixels(cache_info,clone_info,&image->exception); + status=ClonePixelCachePixels(cache_info,clone_info,exception); *offset+=cache_info->length+page_size-(cache_info->length % page_size); clone_info=(CacheInfo *) DestroyPixelCache(clone_info); return(status); diff --git a/MagickCore/colormap-private.h b/MagickCore/colormap-private.h index 8953148ca..1e505a257 100644 --- a/MagickCore/colormap-private.h +++ b/MagickCore/colormap-private.h @@ -26,12 +26,13 @@ extern "C" { #include #include -static inline Quantum ConstrainColormapIndex(Image *image,const size_t index) +static inline Quantum ConstrainColormapIndex(Image *image,const size_t index, + ExceptionInfo *exception) { if (index < image->colors) return((Quantum) index); - (void) ThrowMagickException(&image->exception,GetMagickModule(), - CorruptImageError,"InvalidColormapIndex","`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, + "InvalidColormapIndex","`%s'",image->filename); return((Quantum) 0); } diff --git a/MagickCore/colormap.c b/MagickCore/colormap.c index 4b6ab0d03..db7c7214b 100644 --- a/MagickCore/colormap.c +++ b/MagickCore/colormap.c @@ -145,7 +145,7 @@ MagickExport MagickBooleanType AcquireImageColormap(Image *image, image->colormap[i].blue=(Quantum) pixel; image->colormap[i].alpha=OpaqueAlpha; } - return(SetImageStorageClass(image,PseudoClass,&image->exception)); + return(SetImageStorageClass(image,PseudoClass,exception)); } /* diff --git a/MagickCore/compare.c b/MagickCore/compare.c index 289f77fd9..eb70cfdc1 100644 --- a/MagickCore/compare.c +++ b/MagickCore/compare.c @@ -1203,8 +1203,8 @@ MagickExport double *GetImageDistortions(Image *image, if ((reconstruct_image->columns != image->columns) || (reconstruct_image->rows != image->rows)) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), - ImageError,"ImageSizeDiffers","`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),ImageError, + "ImageSizeDiffers","`%s'",image->filename); return((double *) NULL); } /* diff --git a/MagickCore/compress.c b/MagickCore/compress.c index c845f3f5d..9badd66ac 100644 --- a/MagickCore/compress.c +++ b/MagickCore/compress.c @@ -773,7 +773,7 @@ MagickExport MagickBooleanType HuffmanEncodeImage(const ImageInfo *image_info, ThrowBinaryException(ResourceLimitError,"MemoryAllocationFailed", inject_image->filename); (void) ResetMagickMemory(scanline,0,width*sizeof(*scanline)); - huffman_image=CloneImage(inject_image,0,0,MagickTrue,&image->exception); + huffman_image=CloneImage(inject_image,0,0,MagickTrue,exception); if (huffman_image == (Image *) NULL) { scanline=(unsigned char *) RelinquishMagickMemory(scanline); diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index c8aeff1cf..5a692d3dc 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -1341,7 +1341,6 @@ MagickExport MagickBooleanType WriteImages(const ImageInfo *image_info, progress_monitor=SetImageProgressMonitor(p,(MagickProgressMonitor) NULL, p->client_data); status&=WriteImage(write_info,p,exception); - GetImageException(p,exception); if (number_images != 1) (void) SetImageProgressMonitor(p,progress_monitor,p->client_data); if (write_info->adjoin != MagickFalse) diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c index 2c713b27d..07db5ff35 100644 --- a/MagickCore/enhance.c +++ b/MagickCore/enhance.c @@ -2621,7 +2621,7 @@ MagickExport MagickBooleanType LinearStretchImage(Image *image, break; } histogram=(MagickRealType *) RelinquishMagickMemory(histogram); - status=LevelImage(image,(double) black,(double) white,1.0,&image->exception); + status=LevelImage(image,(double) black,(double) white,1.0,exception); return(status); } diff --git a/MagickCore/exception.c b/MagickCore/exception.c index 342f85f36..03eb9c488 100644 --- a/MagickCore/exception.c +++ b/MagickCore/exception.c @@ -231,6 +231,42 @@ MagickExport void CatchException(ExceptionInfo *exception) % % % % % % +% C l o n e E x c e p t i o n I n f o % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% CloneExceptionInfo() clones the ExceptionInfo structure. +% +% The format of the CloneExceptionInfo method is: +% +% ExceptionInfo *CloneException(ExceptionInfo *exception) +% +% A description of each parameter follows: +% +% o exception: the exception info. +% +*/ +MagickExport ExceptionInfo *CloneExceptionInfo(ExceptionInfo *exception) +{ + ExceptionInfo + *clone_exception; + + clone_exception=(ExceptionInfo *) AcquireMagickMemory(sizeof(*exception)); + if (clone_exception == (ExceptionInfo *) NULL) + ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed"); + GetExceptionInfo(clone_exception); + InheritException(clone_exception,exception); + exception->relinquish=MagickTrue; + return(exception); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % + D e f a u l t E r r o r H a n d l e r % % % % % diff --git a/MagickCore/exception.h b/MagickCore/exception.h index b979323de..12a132c90 100644 --- a/MagickCore/exception.h +++ b/MagickCore/exception.h @@ -144,6 +144,7 @@ extern MagickExport ErrorHandler extern MagickExport ExceptionInfo *AcquireExceptionInfo(void), + *CloneExceptionInfo(ExceptionInfo *), *DestroyExceptionInfo(ExceptionInfo *); extern MagickExport FatalErrorHandler diff --git a/MagickCore/fx.c b/MagickCore/fx.c index 80c84e79b..3cf788051 100644 --- a/MagickCore/fx.c +++ b/MagickCore/fx.c @@ -4001,7 +4001,6 @@ MagickExport Image *PolaroidImage(const Image *image,const DrawInfo *draw_info, picture_image=DestroyImage(picture_image); if (bend_image == (Image *) NULL) return((Image *) NULL); - InheritException(&bend_image->exception,exception); picture_image=bend_image; rotate_image=RotateImage(picture_image,-90.0,exception); picture_image=DestroyImage(picture_image); diff --git a/MagickCore/image.c b/MagickCore/image.c index 5dc96efb4..74725aef0 100644 --- a/MagickCore/image.c +++ b/MagickCore/image.c @@ -177,7 +177,6 @@ MagickExport Image *AcquireImage(const ImageInfo *image_info, image->ticks_per_second=UndefinedTicksPerSecond; image->compose=OverCompositeOp; image->blur=1.0; - GetExceptionInfo(&image->exception); (void) QueryColorCompliance(BackgroundColor,AllCompliance, &image->background_color,exception); (void) QueryColorCompliance(BorderColor,AllCompliance,&image->border_color, @@ -631,7 +630,6 @@ MagickExport ExceptionType CatchImageException(Image *image) if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); exception=AcquireExceptionInfo(); - GetImageException(image,exception); CatchException(exception); severity=exception->severity; exception=DestroyExceptionInfo(exception); @@ -823,8 +821,6 @@ MagickExport Image *CloneImage(const Image *image,const size_t columns, (void) CloneImageProperties(clone_image,image); (void) CloneImageArtifacts(clone_image,image); GetTimerInfo(&clone_image->timer); - GetExceptionInfo(&clone_image->exception); - InheritException(&clone_image->exception,&image->exception); if (image->ascii85 != (void *) NULL) Ascii85Initialize(clone_image); clone_image->magick_columns=image->magick_columns; @@ -1227,7 +1223,6 @@ MagickExport Image *DestroyImage(Image *image) if (image->ascii85 != (Ascii85Info*) NULL) image->ascii85=(Ascii85Info *) RelinquishMagickMemory(image->ascii85); DestroyBlob(image); - (void) DestroyExceptionInfo(&image->exception); if (image->semaphore != (SemaphoreInfo *) NULL) DestroySemaphoreInfo(&image->semaphore); image->signature=(~MagickSignature); @@ -1401,52 +1396,6 @@ MagickExport Image *GetImageClipMask(const Image *image, % % % % % % -% G e t I m a g e E x c e p t i o n % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% GetImageException() traverses an image sequence and returns any -% error more severe than noted by the exception parameter. -% -% The format of the GetImageException method is: -% -% void GetImageException(Image *image,ExceptionInfo *exception) -% -% A description of each parameter follows: -% -% o image: Specifies a pointer to a list of one or more images. -% -% o exception: return the highest severity exception. -% -*/ -MagickExport void GetImageException(Image *image,ExceptionInfo *exception) -{ - register Image - *next; - - assert(image != (Image *) NULL); - assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) - (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - assert(exception != (ExceptionInfo *) NULL); - assert(exception->signature == MagickSignature); - for (next=image; next != (Image *) NULL; next=GetNextImageInList(next)) - { - if (next->exception.severity == UndefinedException) - continue; - if (next->exception.severity > exception->severity) - InheritException(exception,&next->exception); - next->exception.severity=UndefinedException; - } -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % % G e t I m a g e I n f o % % % % % diff --git a/MagickCore/image.h b/MagickCore/image.h index 3a5ce856f..008555401 100644 --- a/MagickCore/image.h +++ b/MagickCore/image.h @@ -327,9 +327,6 @@ struct _Image BlobInfo *blob; /* image file as in-memory string of 'extent' */ - ExceptionInfo - exception; /* Error handling report */ - MagickBooleanType debug; /* debug output attribute */ @@ -556,7 +553,6 @@ extern MagickExport void AcquireNextImage(const ImageInfo *,Image *,ExceptionInfo *), DestroyImagePixels(Image *), DisassociateImageStream(Image *), - GetImageException(Image *,ExceptionInfo *), GetImageInfo(ImageInfo *), SetImageInfoBlob(ImageInfo *,const void *,const size_t), SetImageInfoFile(ImageInfo *,FILE *); diff --git a/MagickCore/paint.c b/MagickCore/paint.c index 771e9a899..3ba6fe14f 100644 --- a/MagickCore/paint.c +++ b/MagickCore/paint.c @@ -178,7 +178,7 @@ MagickExport MagickBooleanType FloodfillPaintImage(Image *image, /* Set floodfill state. */ - floodplane_image=CloneImage(image,0,0,MagickTrue,&image->exception); + floodplane_image=CloneImage(image,0,0,MagickTrue,exception); if (floodplane_image == (Image *) NULL) return(MagickFalse); (void) SetImageAlphaChannel(floodplane_image,OpaqueAlphaChannel,exception); diff --git a/MagickCore/pixel.c b/MagickCore/pixel.c index c85cdad74..904256422 100644 --- a/MagickCore/pixel.c +++ b/MagickCore/pixel.c @@ -3529,8 +3529,8 @@ MagickExport MagickBooleanType ImportImagePixels(Image *image, default: { quantum_map=(QuantumType *) RelinquishMagickMemory(quantum_map); - (void) ThrowMagickException(&image->exception,GetMagickModule(), - OptionError,"UnrecognizedPixelMap","`%s'",map); + (void) ThrowMagickException(exception,GetMagickModule(),OptionError, + "UnrecognizedPixelMap","`%s'",map); break; } } diff --git a/MagickCore/prepress.c b/MagickCore/prepress.c index 253c7f420..1262319a7 100644 --- a/MagickCore/prepress.c +++ b/MagickCore/prepress.c @@ -102,8 +102,8 @@ MagickExport double GetImageTotalInkDensity(Image *image, assert(image->signature == MagickSignature); if (image->colorspace != CMYKColorspace) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), - ImageError,"ColorSeparatedImageRequired","`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),ImageError, + "ColorSeparatedImageRequired","`%s'",image->filename); return(0.0); } status=MagickTrue; diff --git a/MagickCore/property.c b/MagickCore/property.c index c16c49956..2e54e20dd 100644 --- a/MagickCore/property.c +++ b/MagickCore/property.c @@ -333,6 +333,12 @@ MagickExport MagickBooleanType FormatImageProperty(Image *image, char value[MaxTextExtent]; + ExceptionInfo + *exception; + + MagickBooleanType + status; + ssize_t n; @@ -343,7 +349,10 @@ MagickExport MagickBooleanType FormatImageProperty(Image *image, n=FormatLocaleStringList(value,MaxTextExtent,format,operands); (void) n; va_end(operands); - return(SetImageProperty(image,property,value,&image->exception)); + exception=AcquireExceptionInfo(); + status=SetImageProperty(image,property,value,exception); + exception=DestroyExceptionInfo(exception); + return(status); } /* @@ -2193,7 +2202,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, Image storage class and colorspace. */ colorspace=image->colorspace; - if (IsImageGray(image,&image->exception) != MagickFalse) + if (IsImageGray(image,exception) != MagickFalse) colorspace=GRAYColorspace; (void) FormatLocaleString(value,MaxTextExtent,"%s", CommandOptionToMnemonic(MagickColorspaceOptions,(ssize_t) @@ -2270,7 +2279,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, kurtosis, skewness; - (void) GetImageKurtosis(image,&kurtosis,&skewness,&image->exception); + (void) GetImageKurtosis(image,&kurtosis,&skewness,exception); (void) FormatLocaleString(value,MaxTextExtent,"%.*g", GetMagickPrecision(),kurtosis); break; @@ -2290,7 +2299,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, maximum, minimum; - (void) GetImageRange(image,&minimum,&maximum,&image->exception); + (void) GetImageRange(image,&minimum,&maximum,exception); (void) FormatLocaleString(value,MaxTextExtent,"%.*g", GetMagickPrecision(),maximum); break; @@ -2302,7 +2311,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, standard_deviation; (void) GetImageMean(image,&mean,&standard_deviation, - &image->exception); + exception); (void) FormatLocaleString(value,MaxTextExtent,"%.*g", GetMagickPrecision(),mean); break; @@ -2313,7 +2322,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, maximum, minimum; - (void) GetImageRange(image,&minimum,&maximum,&image->exception); + (void) GetImageRange(image,&minimum,&maximum,exception); (void) FormatLocaleString(value,MaxTextExtent,"%.*g", GetMagickPrecision(),minimum); break; @@ -2336,7 +2345,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, MagickBooleanType opaque; - opaque=IsImageOpaque(image,&image->exception); + opaque=IsImageOpaque(image,exception); (void) CopyMagickString(value,opaque == MagickFalse ? "false" : "true",MaxTextExtent); break; @@ -2390,7 +2399,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, kurtosis, skewness; - (void) GetImageKurtosis(image,&kurtosis,&skewness,&image->exception); + (void) GetImageKurtosis(image,&kurtosis,&skewness,exception); (void) FormatLocaleString(value,MaxTextExtent,"%.*g", GetMagickPrecision(),skewness); break; @@ -2402,7 +2411,7 @@ MagickExport const char *GetMagickProperty(const ImageInfo *image_info, standard_deviation; (void) GetImageMean(image,&mean,&standard_deviation, - &image->exception); + exception); (void) FormatLocaleString(value,MaxTextExtent,"%.*g", GetMagickPrecision(),standard_deviation); break; @@ -2579,7 +2588,7 @@ MagickExport char *InterpretImageProperties(const ImageInfo *image_info, text=(char *) embed_text; if ((*text == '@') && ((*(text+1) == '-') || (IsPathAccessible(text+1) != MagickFalse))) - return(FileToString(embed_text+1,~0,&image->exception)); + return(FileToString(embed_text+1,~0,exception)); /* Translate any embedded format characters. */ @@ -2821,7 +2830,7 @@ MagickExport char *InterpretImageProperties(const ImageInfo *image_info, case 'k': /* Number of unique colors */ { q+=FormatLocaleString(q,extent,"%.20g",(double) GetNumberColors(image, - (FILE *) NULL,&image->exception)); + (FILE *) NULL,exception)); break; } case 'l': /* Image label */ @@ -2881,7 +2890,7 @@ MagickExport char *InterpretImageProperties(const ImageInfo *image_info, colorspace; colorspace=image->colorspace; - if (IsImageGray(image,&image->exception) != MagickFalse) + if (IsImageGray(image,exception) != MagickFalse) colorspace=GRAYColorspace; q+=FormatLocaleString(q,extent,"%s%s%s",CommandOptionToMnemonic( MagickClassOptions,(ssize_t) image->storage_class), diff --git a/MagickCore/segment.c b/MagickCore/segment.c index 2c1eca055..60dead58d 100644 --- a/MagickCore/segment.c +++ b/MagickCore/segment.c @@ -1833,7 +1833,7 @@ MagickExport MagickBooleanType SegmentImage(Image *image, /* Initialize histogram. */ - InitializeHistogram(image,histogram,&image->exception); + InitializeHistogram(image,histogram,exception); (void) OptimalTau(histogram[Red],Tau,0.2,DeltaTau, smooth_threshold == 0.0 ? 1.0 : smooth_threshold,extrema[Red]); (void) OptimalTau(histogram[Green],Tau,0.2,DeltaTau, diff --git a/MagickCore/stream.c b/MagickCore/stream.c index aa302d4c4..8d1e00d6a 100644 --- a/MagickCore/stream.c +++ b/MagickCore/stream.c @@ -2704,7 +2704,7 @@ static MagickBooleanType SyncAuthenticPixelsStream(Image *image, % The format of the WriteStream() method is: % % MagickBooleanType WriteStream(const ImageInfo *image_info,Image *, -% StreamHandler stream) +% StreamHandler stream,ExceptionInfo *exception) % % A description of each parameter follows: % @@ -2712,9 +2712,11 @@ static MagickBooleanType SyncAuthenticPixelsStream(Image *image, % % o stream: A callback method. % +% o exception: return any errors or warnings in this structure. +% */ MagickExport MagickBooleanType WriteStream(const ImageInfo *image_info, - Image *image,StreamHandler stream) + Image *image,StreamHandler stream,ExceptionInfo *exception) { ImageInfo *write_info; @@ -2731,7 +2733,7 @@ MagickExport MagickBooleanType WriteStream(const ImageInfo *image_info, assert(image->signature == MagickSignature); write_info=CloneImageInfo(image_info); write_info->stream=stream; - status=WriteImage(write_info,image,&image->exception); + status=WriteImage(write_info,image,exception); write_info=DestroyImageInfo(write_info); return(status); } diff --git a/MagickCore/stream.h b/MagickCore/stream.h index 943cded5b..4e0d838be 100644 --- a/MagickCore/stream.h +++ b/MagickCore/stream.h @@ -34,7 +34,7 @@ extern MagickExport Image extern MagickExport MagickBooleanType OpenStream(const ImageInfo *,StreamInfo *,const char *,ExceptionInfo *), - WriteStream(const ImageInfo *,Image *,StreamHandler); + WriteStream(const ImageInfo *,Image *,StreamHandler,ExceptionInfo *); extern MagickExport StreamInfo *AcquireStreamInfo(const ImageInfo *,ExceptionInfo *), diff --git a/MagickWand/compare.c b/MagickWand/compare.c index a18f55278..93e9a8b33 100644 --- a/MagickWand/compare.c +++ b/MagickWand/compare.c @@ -1049,7 +1049,7 @@ WandExport MagickBooleanType CompareImagesCommand(ImageInfo *image_info, *channel_distortion; channel_distortion=GetImageDistortions(image,reconstruct_image, - metric,&image->exception); + metric,exception); (void) FormatLocaleFile(stderr,"Image: %s\n",image->filename); if ((reconstruct_image->columns != image->columns) || (reconstruct_image->rows != image->rows)) diff --git a/MagickWand/composite.c b/MagickWand/composite.c index 00e6c40e2..00dcf0b82 100644 --- a/MagickWand/composite.c +++ b/MagickWand/composite.c @@ -195,7 +195,6 @@ static MagickBooleanType CompositeImageList(ImageInfo *image_info,Image **image, for (x=0; x < (ssize_t) (*image)->columns; x+=(ssize_t) columns) status&=CompositeImage(*image,composite_options->compose, composite_image,x,y,exception); - GetImageException(*image,exception); } else { @@ -218,7 +217,6 @@ static MagickBooleanType CompositeImageList(ImageInfo *image_info,Image **image, */ status&=CompositeImage(*image,composite_options->compose, composite_image,geometry.x,geometry.y,exception); - GetImageException(*image,exception); } } (void) SetPixelChannelMap(composite_image,channel_mask); diff --git a/MagickWand/display.c b/MagickWand/display.c index 1c8f6a41f..49d3868d9 100644 --- a/MagickWand/display.c +++ b/MagickWand/display.c @@ -603,10 +603,8 @@ WandExport MagickBooleanType DisplayImageCommand(ImageInfo *image_info, */ (void) CopyMagickString(display_image->filename, resource_info.write_filename,MaxTextExtent); - (void) SetImageInfo(image_info,1,&display_image->exception); - status&=WriteImage(image_info,display_image, - &display_image->exception); - GetImageException(display_image,exception); + (void) SetImageInfo(image_info,1,exception); + status&=WriteImage(image_info,display_image,exception); } /* Proceed to next/previous image. diff --git a/MagickWand/mogrify-private.h b/MagickWand/mogrify-private.h index 40a194ad2..5b6ce13ca 100644 --- a/MagickWand/mogrify-private.h +++ b/MagickWand/mogrify-private.h @@ -40,10 +40,7 @@ extern "C" { { \ FireImageStack(MagickTrue,advance,MagickTrue); \ if (image != (Image *) NULL) \ - { \ - InheritException(exception,&(image)->exception); \ - (void) SyncImagesSettings(image_info,image,exception); \ - } \ + (void) SyncImagesSettings(image_info,image,exception); \ } #define FireImageStack(postfix,advance,fire) \ if ((j <= i) && (i < (ssize_t) argc)) \ diff --git a/MagickWand/montage.c b/MagickWand/montage.c index 92189664f..bb0919d6e 100644 --- a/MagickWand/montage.c +++ b/MagickWand/montage.c @@ -1763,7 +1763,6 @@ WandExport MagickBooleanType MontageImageCommand(ImageInfo *image_info, /* Write image. */ - GetImageException(montage_image,exception); (void) CopyMagickString(image_info->filename,argv[argc-1],MaxTextExtent); (void) CopyMagickString(montage_image->magick_filename,argv[argc-1], MaxTextExtent); diff --git a/MagickWand/pixel-iterator.c b/MagickWand/pixel-iterator.c index dec99443b..b8a10bffb 100644 --- a/MagickWand/pixel-iterator.c +++ b/MagickWand/pixel-iterator.c @@ -911,6 +911,9 @@ WandExport void PixelSetLastIteratorRow(PixelIterator *iterator) */ WandExport MagickBooleanType PixelSyncIterator(PixelIterator *iterator) { + MagickBooleanType + status; + register ssize_t x; @@ -921,7 +924,9 @@ WandExport MagickBooleanType PixelSyncIterator(PixelIterator *iterator) assert(iterator->signature == WandSignature); if (iterator->debug != MagickFalse) (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",iterator->name); - if (SetCacheViewStorageClass(iterator->view,DirectClass) == MagickFalse) + status=SetCacheViewStorageClass(iterator->view,DirectClass, + iterator->exception); + if (status == MagickFalse) return(MagickFalse); pixels=GetCacheViewAuthenticPixels(iterator->view,iterator->region.x, iterator->region.y+iterator->y,iterator->region.width,1, diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs index f1c95c95e..d4ff707db 100644 --- a/PerlMagick/Magick.xs +++ b/PerlMagick/Magick.xs @@ -6785,12 +6785,10 @@ Layers(ref,...) layers=CoalesceImages(image,exception); if (layers == (Image *) NULL) break; - InheritException(&(layers->exception),exception); image=layers; layers=OptimizeImageLayers(image,exception); if (layers == (Image *) NULL) break; - InheritException(&(layers->exception),exception); image=DestroyImageList(image); image=layers; layers=(Image *) NULL; @@ -6857,10 +6855,7 @@ Layers(ref,...) } } if (layers != (Image *) NULL) - { - InheritException(&(layers->exception),exception); - image=layers; - } + image=layers; if ((image == (Image *) NULL) || (exception->severity >= ErrorException)) goto PerlException; for ( ; image; image=image->next) diff --git a/coders/bgr.c b/coders/bgr.c index 24d3393a0..32c16f816 100644 --- a/coders/bgr.c +++ b/coders/bgr.c @@ -944,7 +944,6 @@ static Image *ReadBGRImage(const ImageInfo *image_info, scene++; } while (count == (ssize_t) length); quantum_info=DestroyQuantumInfo(quantum_info); - InheritException(&image->exception,&canvas_image->exception); canvas_image=DestroyImage(canvas_image); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/bmp.c b/coders/bmp.c index 4cf51c1e7..509738c5a 100644 --- a/coders/bmp.c +++ b/coders/bmp.c @@ -1049,17 +1049,17 @@ static Image *ReadBMPImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x=0; x < ((ssize_t) image->columns-1); x+=2) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,*p & 0x0f); + index=ConstrainColormapIndex(image,*p & 0x0f,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); p++; } if ((image->columns % 2) != 0) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0xf); + index=ConstrainColormapIndex(image,(*p >> 4) & 0xf,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); p++; @@ -1093,7 +1093,7 @@ static Image *ReadBMPImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x = (ssize_t)image->columns; x != 0; --x) { - index=ConstrainColormapIndex(image,*p++); + index=ConstrainColormapIndex(image,*p++,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); } diff --git a/coders/caption.c b/coders/caption.c index dc706885c..e4697d08f 100644 --- a/coders/caption.c +++ b/coders/caption.c @@ -201,7 +201,6 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info, draw_info->interline_spacing+draw_info->stroke_width+0.5); if (SetImageBackgroundColor(image,exception) == MagickFalse) { - InheritException(exception,&image->exception); image=DestroyImageList(image); return((Image *) NULL); } diff --git a/coders/cmyk.c b/coders/cmyk.c index 7777333fb..2624326c9 100644 --- a/coders/cmyk.c +++ b/coders/cmyk.c @@ -1061,7 +1061,6 @@ static Image *ReadCMYKImage(const ImageInfo *image_info, scene++; } while (count == (ssize_t) length); quantum_info=DestroyQuantumInfo(quantum_info); - InheritException(&image->exception,&canvas_image->exception); canvas_image=DestroyImage(canvas_image); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/cut.c b/coders/cut.c index f504d2731..cf184f1da 100644 --- a/coders/cut.c +++ b/coders/cut.c @@ -95,17 +95,14 @@ typedef struct } CUTPalHeader; -static void InsertRow(ssize_t depth,unsigned char *p,ssize_t y,Image *image) +static void InsertRow(Image *image,ssize_t depth,unsigned char *p,ssize_t y, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - size_t bit; ssize_t x; register Quantum *q; Quantum index; index=0; - exception=(&image->exception); switch (depth) { case 1: /* Convert bitmap scanline. */ @@ -144,35 +141,36 @@ static void InsertRow(ssize_t depth,unsigned char *p,ssize_t y,Image *image) break; for (x=0; x < ((ssize_t) image->columns-1); x+=2) { - index=ConstrainColormapIndex(image,(*p >> 6) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 6) & 0x3,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p >> 4) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x3,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p >> 2) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 2) & 0x3,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p) & 0x3); + index=ConstrainColormapIndex(image,(*p) & 0x3,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); p++; } if ((image->columns % 4) != 0) { - index=ConstrainColormapIndex(image,(*p >> 6) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 6) & 0x3,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); if ((image->columns % 4) >= 1) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x3,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); if ((image->columns % 4) >= 2) { - index=ConstrainColormapIndex(image,(*p >> 2) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 2) & 0x3, + exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); } @@ -191,17 +189,17 @@ static void InsertRow(ssize_t depth,unsigned char *p,ssize_t y,Image *image) break; for (x=0; x < ((ssize_t) image->columns-1); x+=2) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0xf); + index=ConstrainColormapIndex(image,(*p >> 4) & 0xf,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p) & 0xf); + index=ConstrainColormapIndex(image,(*p) & 0xf,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); p++; } if ((image->columns % 2) != 0) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0xf); + index=ConstrainColormapIndex(image,(*p >> 4) & 0xf,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); p++; @@ -216,7 +214,7 @@ static void InsertRow(ssize_t depth,unsigned char *p,ssize_t y,Image *image) if (q == (Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { - index=ConstrainColormapIndex(image,*p); + index=ConstrainColormapIndex(image,*p,exception); SetPixelIndex(image,index,q); p++; q+=GetPixelChannels(image); @@ -232,11 +230,8 @@ static void InsertRow(ssize_t depth,unsigned char *p,ssize_t y,Image *image) /* Compute the number of colors in Grayed R[i]=G[i]=B[i] image */ -static int GetCutColors(Image *image) +static int GetCutColors(Image *image,ExceptionInfo *exception) { - ExceptionInfo - *exception; - Quantum intensity, scale_intensity; @@ -248,7 +243,6 @@ static int GetCutColors(Image *image) x, y; - exception=(&image->exception); intensity=0; scale_intensity=ScaleCharToQuantum(16); for (y=0; y < (ssize_t) image->rows; y++) @@ -553,7 +547,7 @@ static Image *ReadCUTImage(const ImageInfo *image_info,ExceptionInfo *exception) RunCountMasked=RunCount & 0x7F; } - InsertRow(depth,BImgBuff,i,image); + InsertRow(image,depth,BImgBuff,i,exception); } (void) SyncImage(image,exception); @@ -563,9 +557,9 @@ static Image *ReadCUTImage(const ImageInfo *image_info,ExceptionInfo *exception) if(palette==NULL) { /*attempt to detect binary (black&white) images*/ if ((image->storage_class == PseudoClass) && - (IsImageGray(image,&image->exception) != MagickFalse)) + (IsImageGray(image,exception) != MagickFalse)) { - if(GetCutColors(image)==2) + if(GetCutColors(image,exception)==2) { for (i=0; i < (ssize_t)image->colors; i++) { diff --git a/coders/dcm.c b/coders/dcm.c index 58e135511..ccdf200b8 100644 --- a/coders/dcm.c +++ b/coders/dcm.c @@ -3863,7 +3863,8 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) 0.5)/(window_width-1))+0.5)); } index&=mask; - index=(int) ConstrainColormapIndex(image,(size_t) index); + index=(int) ConstrainColormapIndex(image,(size_t) index, + exception); SetPixelIndex(image,index,q); pixel.red=1UL*image->colormap[index].red; pixel.green=1UL*image->colormap[index].green; @@ -3992,7 +3993,8 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) 0.5)/(window_width-1))+0.5)); } index&=mask; - index=(int) ConstrainColormapIndex(image,(size_t) index); + index=(int) ConstrainColormapIndex(image,(size_t) index, + exception); SetPixelIndex(image,(((size_t) GetPixelIndex(image,q)) | (((size_t) index) << 8)),q); pixel.red=1UL*image->colormap[index].red; diff --git a/coders/dds.c b/coders/dds.c index 56385a48f..1dbc8bcae 100644 --- a/coders/dds.c +++ b/coders/dds.c @@ -153,7 +153,7 @@ typedef struct _DDSColors } DDSColors; typedef MagickBooleanType - DDSDecoder(Image *,DDSInfo *); + DDSDecoder(Image *,DDSInfo *,ExceptionInfo *); /* Macros @@ -179,19 +179,19 @@ static void DDSColors *c, MagickBooleanType ignoreAlpha); static MagickBooleanType - ReadDXT1(Image *image, DDSInfo *dds_info); + ReadDXT1(Image *, DDSInfo *,ExceptionInfo *); static MagickBooleanType - ReadDXT3(Image *image, DDSInfo *dds_info); + ReadDXT3(Image *image, DDSInfo *dds_info,ExceptionInfo *); static MagickBooleanType - ReadDXT5(Image *image, DDSInfo *dds_info); + ReadDXT5(Image *image, DDSInfo *dds_info,ExceptionInfo *); static MagickBooleanType - ReadUncompressedRGB(Image *image, DDSInfo *dds_info); + ReadUncompressedRGB(Image *image, DDSInfo *dds_info,ExceptionInfo *); static MagickBooleanType - ReadUncompressedRGBA(Image *image, DDSInfo *dds_info); + ReadUncompressedRGBA(Image *image, DDSInfo *dds_info,ExceptionInfo *); static void SkipDXTMipmaps(Image *image, DDSInfo *dds_info, int texel_size); @@ -392,7 +392,7 @@ static Image *ReadDDSImage(const ImageInfo *image_info,ExceptionInfo *exception) return(GetFirstImageInList(image)); } - if ((decoder)(image, &dds_info) != MagickTrue) + if ((decoder)(image, &dds_info, exception) != MagickTrue) { (void) CloseBlob(image); return(GetFirstImageInList(image)); @@ -491,14 +491,12 @@ static void CalculateColors(unsigned short c0, unsigned short c1, } } -static MagickBooleanType ReadDXT1(Image *image, DDSInfo *dds_info) +static MagickBooleanType ReadDXT1(Image *image, DDSInfo *dds_info, + ExceptionInfo *exception) { DDSColors colors; - ExceptionInfo - *exception; - register Quantum *q; @@ -520,7 +518,6 @@ static MagickBooleanType ReadDXT1(Image *image, DDSInfo *dds_info) c0, c1; - exception=(&image->exception); for (y = 0; y < (ssize_t) dds_info->height; y += 4) { for (x = 0; x < (ssize_t) dds_info->width; x += 4) @@ -569,14 +566,12 @@ static MagickBooleanType ReadDXT1(Image *image, DDSInfo *dds_info) return MagickTrue; } -static MagickBooleanType ReadDXT3(Image *image, DDSInfo *dds_info) +static MagickBooleanType ReadDXT3(Image *image, DDSInfo *dds_info, + ExceptionInfo *exception) { DDSColors colors; - ExceptionInfo - *exception; - register Quantum *q; @@ -601,7 +596,6 @@ static MagickBooleanType ReadDXT3(Image *image, DDSInfo *dds_info) c0, c1; - exception=(&image->exception); for (y = 0; y < (ssize_t) dds_info->height; y += 4) { for (x = 0; x < (ssize_t) dds_info->width; x += 4) @@ -658,14 +652,12 @@ static MagickBooleanType ReadDXT3(Image *image, DDSInfo *dds_info) return MagickTrue; } -static MagickBooleanType ReadDXT5(Image *image, DDSInfo *dds_info) +static MagickBooleanType ReadDXT5(Image *image, DDSInfo *dds_info, + ExceptionInfo *exception) { DDSColors colors; - ExceptionInfo - *exception; - MagickSizeType alpha_bits; @@ -694,7 +686,6 @@ static MagickBooleanType ReadDXT5(Image *image, DDSInfo *dds_info) c0, c1; - exception=(&image->exception); for (y = 0; y < (ssize_t) dds_info->height; y += 4) { for (x = 0; x < (ssize_t) dds_info->width; x += 4) @@ -762,18 +753,15 @@ static MagickBooleanType ReadDXT5(Image *image, DDSInfo *dds_info) return MagickTrue; } -static MagickBooleanType ReadUncompressedRGB(Image *image, DDSInfo *dds_info) +static MagickBooleanType ReadUncompressedRGB(Image *image, DDSInfo *dds_info, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - ssize_t x, y; register Quantum *q; - exception=(&image->exception); for (y = 0; y < (ssize_t) dds_info->height; y++) { q = QueueAuthenticPixels(image, 0, y, dds_info->width, 1,exception); @@ -803,18 +791,15 @@ static MagickBooleanType ReadUncompressedRGB(Image *image, DDSInfo *dds_info) return MagickTrue; } -static MagickBooleanType ReadUncompressedRGBA(Image *image, DDSInfo *dds_info) +static MagickBooleanType ReadUncompressedRGBA(Image *image, DDSInfo *dds_info, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - ssize_t x, y; register Quantum *q; - exception=(&image->exception); for (y = 0; y < (ssize_t) dds_info->height; y++) { q = QueueAuthenticPixels(image, 0, y, dds_info->width, 1,exception); diff --git a/coders/dib.c b/coders/dib.c index 38ac86bda..9c6ca4cf9 100644 --- a/coders/dib.c +++ b/coders/dib.c @@ -696,17 +696,17 @@ static Image *ReadDIBImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x=0; x < ((ssize_t) image->columns-1); x+=2) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0xf); + index=ConstrainColormapIndex(image,(*p >> 4) & 0xf,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,*p & 0xf); + index=ConstrainColormapIndex(image,*p & 0xf,exception); SetPixelIndex(image,index,q); p++; q+=GetPixelChannels(image); } if ((image->columns % 2) != 0) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0xf); + index=ConstrainColormapIndex(image,(*p >> 4) & 0xf,exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); p++; @@ -740,7 +740,7 @@ static Image *ReadDIBImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x=0; x < (ssize_t) image->columns; x++) { - index=ConstrainColormapIndex(image,*p); + index=ConstrainColormapIndex(image,*p,exception); SetPixelIndex(image,index,q); p++; q+=GetPixelChannels(image); diff --git a/coders/djvu.c b/coders/djvu.c index 8a96229ec..34f6aefa8 100644 --- a/coders/djvu.c +++ b/coders/djvu.c @@ -321,7 +321,7 @@ process_message(ddjvu_message_t *message) * we use the RGB format! */ static void -get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, const ImageInfo *image_info ) { +get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, const ImageInfo *image_info, ExceptionInfo *exception ) { ddjvu_format_t *format; @@ -394,7 +394,7 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, for (y=0; y < (ssize_t) image->rows; y++) { - Quantum * o = QueueAuthenticPixels(image,0,y,image->columns,1,&image->exception); + Quantum * o = QueueAuthenticPixels(image,0,y,image->columns,1,exception); if (o == (Quantum *) NULL) break; bit=0; @@ -412,11 +412,11 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, byte>>=1; o+=GetPixelChannels(image); } - if (SyncAuthenticPixels(image,&image->exception) == MagickFalse) + if (SyncAuthenticPixels(image,exception) == MagickFalse) break; } if (!image->ping) - SyncImage(image,&image->exception); + SyncImage(image,exception); } else { #if DEBUG printf("%s: expanding PHOTO page/image\n", __FUNCTION__); @@ -436,7 +436,7 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, #if DEBUG if (i % 1000 == 0) printf("%d\n",i); #endif - r = QueueAuthenticPixels(image,0,i,image->columns,1,&image->exception); + r = QueueAuthenticPixels(image,0,i,image->columns,1,exception); if (r == (Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) @@ -447,7 +447,7 @@ get_page_image(LoadContext *lc, ddjvu_page_t *page, int x, int y, int w, int h, r+=GetPixelChannels(image); } - SyncAuthenticPixels(image,&image->exception); + SyncAuthenticPixels(image,exception); } } q=(unsigned char *) RelinquishMagickMemory(q); @@ -673,7 +673,8 @@ static Image *ReadOneDJVUImage(LoadContext* lc,const int pagenum, #if 1 /* per_line */ /* q = QueueAuthenticPixels(image,0,0,image->columns,image->rows); */ - get_page_image(lc, lc->page, 0, 0, info.width, info.height, image_info); + get_page_image(lc, lc->page, 0, 0, info.width, info.height, image_info, + exception); #else int i; for (i = 0;i< image->rows; i++) diff --git a/coders/exr.c b/coders/exr.c index d54f3abf8..1d960e1ef 100644 --- a/coders/exr.c +++ b/coders/exr.c @@ -456,7 +456,7 @@ static MagickBooleanType WriteEXRImage(const ImageInfo *image_info,Image *image, } (void) ImfCloseOutputFile(file); scanline=(ImfRgba *) RelinquishMagickMemory(scanline); - (void) FileToImage(image,write_info->filename); + (void) FileToImage(image,write_info->filename,exception); (void) RelinquishUniqueFileResource(write_info->filename); write_info=DestroyImageInfo(write_info); (void) CloseBlob(image); diff --git a/coders/gif.c b/coders/gif.c index 35f74d895..a84bc13a8 100644 --- a/coders/gif.c +++ b/coders/gif.c @@ -441,7 +441,7 @@ static MagickBooleanType DecodeImage(Image *image,const ssize_t opacity, c=ReadBlobLZWByte(lzw_info); if (c < 0) break; - index=ConstrainColormapIndex(image,(size_t) c); + index=ConstrainColormapIndex(image,(size_t) c,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); SetPixelAlpha(image,(ssize_t) index == opacity ? TransparentAlpha : @@ -530,7 +530,7 @@ static MagickBooleanType DecodeImage(Image *image,const ssize_t opacity, % */ static MagickBooleanType EncodeImage(const ImageInfo *image_info,Image *image, - const size_t data_size) + const size_t data_size,ExceptionInfo *exception) { #define MaxCode(number_bits) ((one << (number_bits))-1) #define MaxHashTable 5003 @@ -657,7 +657,7 @@ static MagickBooleanType EncodeImage(const ImageInfo *image_info,Image *image, register ssize_t x; - p=GetVirtualPixels(image,0,offset,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,offset,image->columns,1,exception); if (p == (const Quantum *) NULL) break; if (y == 0) @@ -1856,7 +1856,8 @@ static MagickBooleanType WriteGIFImage(const ImageInfo *image_info,Image *image, */ c=(int) MagickMax(bits_per_pixel,2); (void) WriteBlobByte(image,(unsigned char) c); - status=EncodeImage(write_info,image,(size_t) MagickMax(bits_per_pixel,2)+1); + status=EncodeImage(write_info,image,(size_t) MagickMax(bits_per_pixel,2)+1, + exception); if (status == MagickFalse) { global_colormap=(unsigned char *) RelinquishMagickMemory( diff --git a/coders/gray.c b/coders/gray.c index 7655df7a2..944549984 100644 --- a/coders/gray.c +++ b/coders/gray.c @@ -270,7 +270,6 @@ static Image *ReadGRAYImage(const ImageInfo *image_info, scene++; } while (count == (ssize_t) length); quantum_info=DestroyQuantumInfo(quantum_info); - InheritException(&image->exception,&canvas_image->exception); canvas_image=DestroyImage(canvas_image); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/jpeg.c b/coders/jpeg.c index 7a853d186..5489429a8 100644 --- a/coders/jpeg.c +++ b/coders/jpeg.c @@ -285,22 +285,26 @@ static void JPEGErrorHandler(j_common_ptr jpeg_info) ErrorManager *error_manager; + ExceptionInfo + *exception; + Image *image; *message='\0'; error_manager=(ErrorManager *) jpeg_info->client_data; image=error_manager->image; + exception=error_manager->exception; (jpeg_info->err->format_message)(jpeg_info,message); if (image->debug != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule(), "[%s] JPEG Trace: \"%s\"",image->filename,message); if (error_manager->finished != MagickFalse) - (void) ThrowMagickException(&image->exception,GetMagickModule(), - CorruptImageWarning,(char *) message,"`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageWarning, + (char *) message,"`%s'",image->filename); else - (void) ThrowMagickException(&image->exception,GetMagickModule(), - CorruptImageError,(char *) message,"`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, + (char *) message,"`%s'",image->filename); longjmp(error_manager->error_recovery,1); } @@ -1024,7 +1028,6 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, number_pixels=(MagickSizeType) image->columns*image->rows; if (number_pixels != 0) return(GetFirstImageInList(image)); - InheritException(exception,&image->exception); return(DestroyImage(image)); } jpeg_info.client_data=(void *) &error_manager; @@ -1288,7 +1291,7 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, pixel=(size_t) GETJSAMPLE(*p); else pixel=(size_t) ((GETJSAMPLE(*p) ^ 0x80) << 4); - index=ConstrainColormapIndex(image,pixel); + index=ConstrainColormapIndex(image,pixel,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); p++; @@ -1326,7 +1329,7 @@ static Image *ReadJPEGImage(const ImageInfo *image_info, if (jpeg_info.output_components == 1) for (x=0; x < (ssize_t) image->columns; x++) { - index=ConstrainColormapIndex(image,(size_t) GETJSAMPLE(*p)); + index=ConstrainColormapIndex(image,(size_t) GETJSAMPLE(*p),exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); p++; diff --git a/coders/label.c b/coders/label.c index 8f12061f2..6c5b62039 100644 --- a/coders/label.c +++ b/coders/label.c @@ -165,7 +165,6 @@ static Image *ReadLABELImage(const ImageInfo *image_info, status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception); if (status == MagickFalse) { - InheritException(exception,&image->exception); image=DestroyImageList(image); return((Image *) NULL); } @@ -192,7 +191,6 @@ static Image *ReadLABELImage(const ImageInfo *image_info, 0.5); if (SetImageBackgroundColor(image,exception) == MagickFalse) { - InheritException(exception,&image->exception); image=DestroyImageList(image); return((Image *) NULL); } diff --git a/coders/map.c b/coders/map.c index 49de68120..82199a25a 100644 --- a/coders/map.c +++ b/coders/map.c @@ -218,11 +218,12 @@ static Image *ReadMAPImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x=0; x < (ssize_t) image->columns; x++) { - index=ConstrainColormapIndex(image,*p); + index=ConstrainColormapIndex(image,*p,exception); p++; if (image->colors > 256) { - index=ConstrainColormapIndex(image,((size_t) index << 8)+(*p)); + index=ConstrainColormapIndex(image,((size_t) index << 8)+(*p), + exception); p++; } SetPixelIndex(image,index,q); diff --git a/coders/mat.c b/coders/mat.c index 690f732b9..2a9dfde0e 100644 --- a/coders/mat.c +++ b/coders/mat.c @@ -178,11 +178,9 @@ typedef enum static const QuantumType z2qtype[4] = {GrayQuantum, BlueQuantum, GreenQuantum, RedQuantum}; -static void InsertComplexDoubleRow(double *p, int y, Image * image, double MinVal, - double MaxVal) +static void InsertComplexDoubleRow(Image *image,double *p,int y,double MinVal, + double MaxVal,ExceptionInfo *exception) { - ExceptionInfo - *exception; double f; int x; @@ -193,7 +191,6 @@ static void InsertComplexDoubleRow(double *p, int y, Image * image, double MinVa if (MaxVal == 0) MaxVal = 1; - exception=(&image->exception); q=QueueAuthenticPixels(image,0,y,image->columns,1,exception); if (q == (Quantum *) NULL) return; @@ -244,12 +241,9 @@ static void InsertComplexDoubleRow(double *p, int y, Image * image, double MinVa } -static void InsertComplexFloatRow(float *p, int y, Image * image, double MinVal, - double MaxVal) +static void InsertComplexFloatRow(Image *image,float *p,int y,double MinVal, + double MaxVal,ExceptionInfo *exception) { - ExceptionInfo - *exception; - double f; int x; register Quantum *q; @@ -259,7 +253,6 @@ static void InsertComplexFloatRow(float *p, int y, Image * image, double MinVal, if (MaxVal == 0) MaxVal = 1; - exception=(&image->exception); q = QueueAuthenticPixels(image, 0, y, image->columns, 1,exception); if (q == (Quantum *) NULL) return; @@ -950,14 +943,16 @@ ExitLoop: for (i = 0; i < (ssize_t) MATLAB_HDR.SizeY; i++) { ReadBlobDoublesXXX(image2, ldblk, (double *)BImgBuff); - InsertComplexDoubleRow((double *)BImgBuff, i, image, MinVal, MaxVal); + InsertComplexDoubleRow(image, (double *)BImgBuff, i, MinVal, MaxVal, + exception); } if (CellType==miSINGLE) for (i = 0; i < (ssize_t) MATLAB_HDR.SizeY; i++) { ReadBlobFloatsXXX(image2, ldblk, (float *)BImgBuff); - InsertComplexFloatRow((float *)BImgBuff, i, image, MinVal, MaxVal); + InsertComplexFloatRow(image,(float *)BImgBuff,i,MinVal,MaxVal, + exception); } } diff --git a/coders/miff.c b/coders/miff.c index b08525f23..6e4a2a190 100644 --- a/coders/miff.c +++ b/coders/miff.c @@ -199,7 +199,7 @@ static inline size_t MagickMin(const size_t x,const size_t y) } static void PushRunlengthPacket(Image *image,const unsigned char *pixels, - size_t *length,PixelInfo *pixel) + size_t *length,PixelInfo *pixel,ExceptionInfo *exception) { const unsigned char *p; @@ -213,24 +213,25 @@ static void PushRunlengthPacket(Image *image,const unsigned char *pixels, case 32: { pixel->index=ConstrainColormapIndex(image, - (*p << 24) | (*(p+1) << 16) | (*(p+2) << 8) | *(p+3)); + (*p << 24) | (*(p+1) << 16) | (*(p+2) << 8) | *(p+3),exception); p+=4; break; } case 16: { - pixel->index=ConstrainColormapIndex(image,(*p << 8) | *(p+1)); + pixel->index=ConstrainColormapIndex(image,(*p << 8) | *(p+1), + exception); p+=2; break; } case 8: { - pixel->index=ConstrainColormapIndex(image,*p); + pixel->index=ConstrainColormapIndex(image,*p,exception); p++; break; } default: - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"ImageDepthNotSupported","`%s'",image->filename); } switch (image->depth) @@ -274,7 +275,7 @@ static void PushRunlengthPacket(Image *image,const unsigned char *pixels, break; } default: - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"ImageDepthNotSupported","`%s'",image->filename); } *length=(size_t) (*p++)+1; @@ -352,8 +353,8 @@ static void PushRunlengthPacket(Image *image,const unsigned char *pixels, break; } default: - (void) ThrowMagickException(&image->exception,GetMagickModule(), - CorruptImageError,"ImageDepthNotSupported","`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, + "ImageDepthNotSupported","`%s'",image->filename); } *length=(size_t) (*p++)+1; } @@ -1405,7 +1406,7 @@ static Image *ReadMIFFImage(const ImageInfo *image_info, if (length == 0) { count=ReadBlob(image,packet_size,pixels); - PushRunlengthPacket(image,pixels,&length,&pixel); + PushRunlengthPacket(image,pixels,&length,&pixel,exception); } length--; if (image->storage_class == PseudoClass) @@ -1646,7 +1647,7 @@ ModuleExport void UnregisterMIFFImage(void) */ static unsigned char *PopRunlengthPacket(Image *image,unsigned char *pixels, - size_t length,PixelInfo *pixel) + size_t length,PixelInfo *pixel,ExceptionInfo *exception) { if (image->storage_class != DirectClass) { @@ -1665,7 +1666,7 @@ static unsigned char *PopRunlengthPacket(Image *image,unsigned char *pixels, break; } default: - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"ImageDepthNotSupported","`%s'",image->filename); } switch (image->depth) @@ -1708,7 +1709,7 @@ static unsigned char *PopRunlengthPacket(Image *image,unsigned char *pixels, break; } default: - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"ImageDepthNotSupported","`%s'",image->filename); } *pixels++=(unsigned char) length; @@ -1788,8 +1789,8 @@ static unsigned char *PopRunlengthPacket(Image *image,unsigned char *pixels, break; } default: - (void) ThrowMagickException(&image->exception,GetMagickModule(), - CorruptImageError,"ImageDepthNotSupported","`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, + "ImageDepthNotSupported","`%s'",image->filename); } *pixels++=(unsigned char) length; return(pixels); @@ -2418,13 +2419,13 @@ static MagickBooleanType WriteMIFFImage(const ImageInfo *image_info, length++; else { - q=PopRunlengthPacket(image,q,length,&pixel); + q=PopRunlengthPacket(image,q,length,&pixel,exception); length=0; } SetPixelInfo(image,p,&pixel); p+=GetPixelChannels(image); } - q=PopRunlengthPacket(image,q,length,&pixel); + q=PopRunlengthPacket(image,q,length,&pixel,exception); (void) WriteBlob(image,(size_t) (q-pixels),pixels); break; } diff --git a/coders/msl.c b/coders/msl.c index 8e7b0b0f5..2c10ce162 100644 --- a/coders/msl.c +++ b/coders/msl.c @@ -572,9 +572,10 @@ static void MSLPushImage(MSLInfo *msl_info,Image *image) msl_info->draw_info[n-1]); if (image == (Image *) NULL) msl_info->attributes[n]=AcquireImage(msl_info->image_info[n], - &image->exception); + msl_info->exception); else - msl_info->attributes[n]=CloneImage(image,0,0,MagickTrue,&image->exception); + msl_info->attributes[n]=CloneImage(image,0,0,MagickTrue, + msl_info->exception); msl_info->image[n]=(Image *) image; if ((msl_info->image_info[n] == (ImageInfo *) NULL) || (msl_info->attributes[n] == (Image *) NULL)) @@ -743,7 +744,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } channel_mask=SetPixelChannelMask(msl_info->image[n],channel); noise_image=AddNoiseImage(msl_info->image[n],noise,1.0, - &msl_info->image[n]->exception); + msl_info->exception); (void) SetPixelChannelMap(msl_info->image[n],channel_mask); if (noise_image == (Image *) NULL) break; @@ -1083,7 +1084,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, draw_info->affine.ty=affine.rx*current.tx+affine.sy*current.ty+ affine.ty; (void) AnnotateImage(msl_info->image[n],draw_info, - &msl_info->image[n]->exception); + msl_info->exception); draw_info=DestroyDrawInfo(draw_info); break; } @@ -1138,7 +1139,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } append_image=AppendImages(msl_info->image[n],stack, - &msl_info->image[n]->exception); + msl_info->exception); if (append_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -1241,7 +1242,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, channel_mask=SetPixelChannelMask(msl_info->image[n],channel); blur_image=BlurImage(msl_info->image[n],geometry_info.rho, geometry_info.sigma,geometry_info.xi, - &msl_info->image[n]->exception); + msl_info->exception); (void) SetPixelChannelMap(msl_info->image[n],channel_mask); if (blur_image == (Image *) NULL) break; @@ -1352,7 +1353,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } border_image=BorderImage(msl_info->image[n],&geometry, - msl_info->image[n]->compose,&msl_info->image[n]->exception); + msl_info->image[n]->compose,msl_info->exception); if (border_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -1414,7 +1415,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, if (LocaleCompare(keyword,"fill") == 0) { (void) QueryColorCompliance(value,AllCompliance, - &target,&msl_info->image[n]->exception); + &target,msl_info->exception); break; } ThrowMSLException(OptionError,"UnrecognizedAttribute", @@ -1430,7 +1431,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } colorize_image=ColorizeImage(msl_info->image[n],blend,&target, - &msl_info->image[n]->exception); + msl_info->exception); if (colorize_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -1511,7 +1512,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, *newImage; newImage=CharcoalImage(msl_info->image[n],radius,sigma,bias, - &msl_info->image[n]->exception); + msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -1616,7 +1617,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } chop_image=ChopImage(msl_info->image[n],&geometry, - &msl_info->image[n]->exception); + msl_info->exception); if (chop_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -1742,7 +1743,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } (void) FloodfillPaintImage(msl_info->image[n],draw_info,&target, geometry.x,geometry.y,paint_method == FloodfillMethod ? - MagickFalse : MagickTrue,&msl_info->image[n]->exception); + MagickFalse : MagickTrue,msl_info->exception); draw_info=DestroyDrawInfo(draw_info); break; } @@ -2150,7 +2151,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) ContrastImage(msl_info->image[n],sharpen, - &msl_info->image[n]->exception); + msl_info->exception); break; } if (LocaleCompare((const char *) tag,"crop") == 0) @@ -2248,7 +2249,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } crop_image=CropImage(msl_info->image[n],&geometry, - &msl_info->image[n]->exception); + msl_info->exception); if (crop_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -2333,7 +2334,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } despeckle_image=DespeckleImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); if (despeckle_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -2367,7 +2368,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) DisplayImages(msl_info->image_info[n],msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); break; } if (LocaleCompare((const char *) tag,"draw") == 0) @@ -2775,7 +2776,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } edge_image=EdgeImage(msl_info->image[n],geometry_info.rho, - geometry_info.sigma,&msl_info->image[n]->exception); + geometry_info.sigma,msl_info->exception); if (edge_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -2854,7 +2855,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } emboss_image=EmbossImage(msl_info->image[n],geometry_info.rho, - geometry_info.sigma,&msl_info->image[n]->exception); + geometry_info.sigma,msl_info->exception); if (emboss_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -2886,7 +2887,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } enhance_image=EnhanceImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); if (enhance_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -2923,7 +2924,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) EqualizeImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); break; } ThrowMSLException(OptionError,"UnrecognizedElement",(const char *) tag); @@ -2948,7 +2949,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, *newImage; newImage=MergeImageLayers(msl_info->image[n],FlattenLayer, - &msl_info->image[n]->exception); + msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -2981,7 +2982,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } flip_image=FlipImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); if (flip_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3013,7 +3014,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } flop_image=FlopImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); if (flop_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3158,7 +3159,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, frame_info.width=msl_info->image[n]->columns+2*frame_info.x; frame_info.height=msl_info->image[n]->rows+2*frame_info.y; frame_image=FrameImage(msl_info->image[n],&frame_info, - msl_info->image[n]->compose,&msl_info->image[n]->exception); + msl_info->image[n]->compose,msl_info->exception); if (frame_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3271,7 +3272,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, (void) FormatLocaleString(gamma,MaxTextExtent,"%g,%g,%g", (double) pixel.red,(double) pixel.green,(double) pixel.blue); (void) GammaImage(msl_info->image[n],atof(gamma), - &msl_info->image[n]->exception); + msl_info->exception); break; } else if (LocaleCompare((const char *) tag,"get") == 0) @@ -3457,7 +3458,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } implode_image=ImplodeImage(msl_info->image[n],geometry_info.rho, - msl_info->image[n]->interpolate,&msl_info->image[n]->exception); + msl_info->image[n]->interpolate,msl_info->exception); if (implode_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3534,7 +3535,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, /* process image */ LevelImage(msl_info->image[n],levelBlack,levelWhite,levelGamma, - &msl_info->image[n]->exception); + msl_info->exception); break; } } @@ -3566,7 +3567,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } magnify_image=MagnifyImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); if (magnify_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3790,7 +3791,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, channel_mask=SetPixelChannelMask(msl_info->image[n],AlphaChannel); (void) FloodfillPaintImage(msl_info->image[n],draw_info,&target, geometry.x,geometry.y,paint_method == FloodfillMethod ? - MagickFalse : MagickTrue,&msl_info->image[n]->exception); + MagickFalse : MagickTrue,msl_info->exception); (void) SetPixelChannelMap(msl_info->image[n],channel_mask); draw_info=DestroyDrawInfo(draw_info); break; @@ -3856,7 +3857,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } median_image=StatisticImage(msl_info->image[n],MedianStatistic, (size_t) geometry_info.rho,(size_t) geometry_info.sigma, - &msl_info->image[n]->exception); + msl_info->exception); if (median_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -3888,7 +3889,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); } minify_image=MinifyImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); if (minify_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -4018,7 +4019,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, (void) FormatLocaleString(modulate,MaxTextExtent,"%g,%g,%g", geometry_info.rho,geometry_info.sigma,geometry_info.xi); (void) ModulateImage(msl_info->image[n],modulate, - &msl_info->image[n]->exception); + msl_info->exception); break; } ThrowMSLException(OptionError,"UnrecognizedElement",(const char *) tag); @@ -4094,7 +4095,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } channel_mask=SetPixelChannelMask(msl_info->image[n],channel); (void) NegateImage(msl_info->image[n],gray, - &msl_info->image[n]->exception); + msl_info->exception); (void) SetPixelChannelMap(msl_info->image[n],channel_mask); break; } @@ -4144,7 +4145,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) NormalizeImage(msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); break; } ThrowMSLException(OptionError,"UnrecognizedElement",(const char *) tag); @@ -4212,7 +4213,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } paint_image=OilPaintImage(msl_info->image[n],geometry_info.rho, - geometry_info.sigma,&msl_info->image[n]->exception); + geometry_info.sigma,msl_info->exception); if (paint_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -4293,7 +4294,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } channel_mask=SetPixelChannelMask(msl_info->image[n],channel); (void) OpaquePaintImage(msl_info->image[n],&target,&fill_color, - MagickFalse,&msl_info->image[n]->exception); + MagickFalse,msl_info->exception); (void) SetPixelChannelMap(msl_info->image[n],channel_mask); break; } @@ -4878,7 +4879,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, draw_info->affine.ty=affine.rx*current.tx+affine.sy*current.ty+ affine.ty; status=GetTypeMetrics(msl_info->attributes[n],draw_info,&metrics, - &msl_info->image[n]->exception); + msl_info->exception); if (status != MagickFalse) { Image @@ -5011,7 +5012,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) RaiseImage(msl_info->image[n],&geometry,raise, - &msl_info->image[n]->exception); + msl_info->exception); break; } if (LocaleCompare((const char *) tag,"read") == 0) @@ -5115,7 +5116,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } paint_image=StatisticImage(msl_info->image[n],NonpeakStatistic, (size_t) geometry_info.rho,(size_t) geometry_info.sigma, - &msl_info->image[n]->exception); + msl_info->exception); if (paint_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5351,7 +5352,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, msl_info->image[n]->y_resolution))+0.5); resample_image=ResizeImage(msl_info->image[n],width,height, msl_info->image[n]->filter,msl_info->image[n]->blur, - &msl_info->image[n]->exception); + msl_info->exception); if (resample_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5466,7 +5467,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } resize_image=ResizeImage(msl_info->image[n],geometry.width, - geometry.height,filter,blur,&msl_info->image[n]->exception); + geometry.height,filter,blur,msl_info->exception); if (resize_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5546,7 +5547,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } roll_image=RollImage(msl_info->image[n],geometry.x,geometry.y, - &msl_info->image[n]->exception); + msl_info->exception); if (roll_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5623,7 +5624,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, Image *newImage; - newImage=RollImage(msl_info->image[n], x, y, &msl_info->image[n]->exception); + newImage=RollImage(msl_info->image[n], x, y, msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5692,7 +5693,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } rotate_image=RotateImage(msl_info->image[n],geometry_info.rho, - &msl_info->image[n]->exception); + msl_info->exception); if (rotate_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5745,7 +5746,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, Image *newImage; - newImage=RotateImage(msl_info->image[n], degrees, &msl_info->image[n]->exception); + newImage=RotateImage(msl_info->image[n], degrees, msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5829,7 +5830,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } sample_image=SampleImage(msl_info->image[n],geometry.width, - geometry.height,&msl_info->image[n]->exception); + geometry.height,msl_info->exception); if (sample_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -5906,7 +5907,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } scale_image=ScaleImage(msl_info->image[n],geometry.width, - geometry.height,&msl_info->image[n]->exception); + geometry.height,msl_info->exception); if (scale_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6259,7 +6260,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } shade_image=ShadeImage(msl_info->image[n],gray,geometry_info.rho, - geometry_info.sigma,&msl_info->image[n]->exception); + geometry_info.sigma,msl_info->exception); if (shade_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6361,7 +6362,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } shadow_image=ShadowImage(msl_info->image[n],geometry_info.rho, geometry_info.sigma,(ssize_t) ceil(geometry_info.xi-0.5),(ssize_t) - ceil(geometry_info.psi-0.5),&msl_info->image[n]->exception); + ceil(geometry_info.psi-0.5),msl_info->exception); if (shadow_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6442,7 +6443,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, *newImage; newImage=SharpenImage(msl_info->image[n],radius,sigma,bias, - &msl_info->image[n]->exception); + msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6528,7 +6529,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, newImage=ShaveImage(msl_info->image[n], &rectInfo, - &msl_info->image[n]->exception); + msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6622,7 +6623,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } shear_image=ShearImage(msl_info->image[n],geometry_info.rho, - geometry_info.sigma,&msl_info->image[n]->exception); + geometry_info.sigma,msl_info->exception); if (shear_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6717,7 +6718,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } (void) SolarizeImage(msl_info->image[n],geometry_info.rho, - &msl_info->image[n]->exception); + msl_info->exception); break; } if (LocaleCompare((const char *) tag,"spread") == 0) @@ -6780,7 +6781,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } spread_image=SpreadImage(msl_info->image[n],geometry_info.rho, - msl_info->image[n]->interpolate,&msl_info->image[n]->exception); + msl_info->image[n]->interpolate,msl_info->exception); if (spread_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6844,7 +6845,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, Image *newImage; - newImage=SteganoImage(msl_info->image[n], watermark, &msl_info->image[n]->exception); + newImage=SteganoImage(msl_info->image[n], watermark, msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6909,7 +6910,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, Image *newImage; - newImage=StereoImage(msl_info->image[n], stereoImage, &msl_info->image[n]->exception); + newImage=StereoImage(msl_info->image[n], stereoImage, msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -6980,8 +6981,9 @@ static void MSLStartElement(void *context,const xmlChar *tag, ThrowMSLException(OptionError,"NoSuchImage",(const char *) tag); break; } - swap=CloneImage(p,0,0,MagickTrue,&p->exception); - ReplaceImageInList(&p,CloneImage(q,0,0,MagickTrue,&q->exception)); + swap=CloneImage(p,0,0,MagickTrue,msl_info->exception); + ReplaceImageInList(&p,CloneImage(q,0,0,MagickTrue, + msl_info->exception)); ReplaceImageInList(&q,swap); msl_info->image[n]=GetFirstImageInList(q); break; @@ -7046,7 +7048,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, } } swirl_image=SwirlImage(msl_info->image[n],geometry_info.rho, - msl_info->image[n]->interpolate,&msl_info->image[n]->exception); + msl_info->image[n]->interpolate,msl_info->exception); if (swirl_image == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -7221,7 +7223,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, (void) QueryColorCompliance(value,AllCompliance,&target, &exception); (void) TransparentPaintImage(msl_info->image[n],&target, - TransparentAlpha,MagickFalse,&msl_info->image[n]->exception); + TransparentAlpha,MagickFalse,msl_info->exception); break; } ThrowMSLException(OptionError,"UnrecognizedAttribute",keyword); @@ -7257,7 +7259,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, rectInfo.height = rectInfo.width = 0; rectInfo.x = rectInfo.y = 0; - newImage=CropImage(msl_info->image[n],&rectInfo, &msl_info->image[n]->exception); + newImage=CropImage(msl_info->image[n],&rectInfo, msl_info->exception); if (newImage == (Image *) NULL) break; msl_info->image[n]=DestroyImage(msl_info->image[n]); @@ -7309,7 +7311,7 @@ static void MSLStartElement(void *context,const xmlChar *tag, /* process */ { (void) WriteImage(msl_info->image_info[n], msl_info->image[n], - &msl_info->image[n]->exception); + msl_info->exception); break; } } @@ -7814,7 +7816,7 @@ static MagickBooleanType ProcessMSLScript(const ImageInfo *image_info,Image **im msl_info.group_info); if (*image == (Image *) NULL) *image=(*msl_info.image); - if ((*msl_info.image)->exception.severity != UndefinedException) + if (msl_info.exception->severity != UndefinedException) return(MagickFalse); return(MagickTrue); } diff --git a/coders/palm.c b/coders/palm.c index 9735b583e..fd1fa99b6 100644 --- a/coders/palm.c +++ b/coders/palm.c @@ -370,7 +370,7 @@ static Image *ReadPALMImage(const ImageInfo *image_info, for (i=0; i < (ssize_t) count; i++) { ReadBlobByte(image); - index=ConstrainColormapIndex(image,255-i); + index=ConstrainColormapIndex(image,255-i,exception); image->colormap[(int) index].red= ScaleCharToQuantum((unsigned char) ReadBlobByte(image)); image->colormap[(int) index].green= @@ -383,7 +383,7 @@ static Image *ReadPALMImage(const ImageInfo *image_info, { for (i=0; i < (ssize_t) (1L << bits_per_pixel); i++) { - index=ConstrainColormapIndex(image,255-i); + index=ConstrainColormapIndex(image,255-i,exception); image->colormap[(int) index].red= ScaleCharToQuantum(PalmPalette[i][0]); image->colormap[(int) index].green= diff --git a/coders/pcd.c b/coders/pcd.c index bcf71267c..15fb98101 100644 --- a/coders/pcd.c +++ b/coders/pcd.c @@ -295,7 +295,7 @@ static MagickBooleanType DecodeImage(Image *image,unsigned char *luma, r++; if ((row > image->rows) || (r == (PCDTable *) NULL)) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageWarning,"SkipToSyncByte","`%s'",image->filename); while ((sum & 0x00fff000) != 0x00fff000) PCDGetBits(8); @@ -983,7 +983,7 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, if ((geometry.height % 2) != 0) geometry.height--; tile_image=ResizeImage(image,geometry.width,geometry.height,TriangleFilter, - 1.0,&image->exception); + 1.0,exception); if (tile_image == (Image *) NULL) return(MagickFalse); flags=ParseGeometry(page_geometry,&geometry_info); @@ -1006,7 +1006,7 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, border_info.width=(geometry.width-tile_image->columns+1) >> 1; border_info.height=(geometry.height-tile_image->rows+1) >> 1; bordered_image=BorderImage(tile_image,&border_info,image->compose, - &image->exception); + exception); if (bordered_image == (Image *) NULL) return(MagickFalse); tile_image=DestroyImage(tile_image); @@ -1016,7 +1016,7 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, if (IsRGBColorspace(image->colorspace) == MagickFalse) (void) TransformImageColorspace(tile_image,YCCColorspace,exception); downsample_image=ResizeImage(tile_image,tile_image->columns/2, - tile_image->rows/2,TriangleFilter,1.0,&image->exception); + tile_image->rows/2,TriangleFilter,1.0,exception); if (downsample_image == (Image *) NULL) return(MagickFalse); /* @@ -1024,8 +1024,7 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, */ for (y=0; y < (ssize_t) tile_image->rows; y+=2) { - p=GetVirtualPixels(tile_image,0,y,tile_image->columns,2, - &tile_image->exception); + p=GetVirtualPixels(tile_image,0,y,tile_image->columns,2,exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) (tile_image->columns << 1); x++) @@ -1033,8 +1032,8 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, (void) WriteBlobByte(image,ScaleQuantumToChar(GetPixelRed(tile_image,p))); p+=GetPixelChannels(tile_image); } - q=GetVirtualPixels(downsample_image,0,y >> 1,downsample_image->columns, - 1,&downsample_image->exception); + q=GetVirtualPixels(downsample_image,0,y >> 1,downsample_image->columns,1, + exception); if (q == (Quantum *) NULL) break; for (x=0; x < (ssize_t) downsample_image->columns; x++) @@ -1043,8 +1042,8 @@ static MagickBooleanType WritePCDTile(Image *image,const char *page_geometry, GetPixelGreen(tile_image,q))); q++; } - q=GetVirtualPixels(downsample_image,0,y >> 1,downsample_image->columns, - 1,&downsample_image->exception); + q=GetVirtualPixels(downsample_image,0,y >> 1,downsample_image->columns,1, + exception); if (q == (Quantum *) NULL) break; for (x=0; x < (ssize_t) downsample_image->columns; x++) diff --git a/coders/pcl.c b/coders/pcl.c index 4386e299d..6a36b2bdb 100644 --- a/coders/pcl.c +++ b/coders/pcl.c @@ -374,7 +374,7 @@ static Image *ReadPCLImage(const ImageInfo *image_info,ExceptionInfo *exception) Image *cmyk_image; - cmyk_image=ConsolidateCMYKImages(image,&image->exception); + cmyk_image=ConsolidateCMYKImages(image,exception); if (cmyk_image != (Image *) NULL) { image=DestroyImageList(image); diff --git a/coders/pdb.c b/coders/pdb.c index 2a0f2a8c7..3ba04d45f 100644 --- a/coders/pdb.c +++ b/coders/pdb.c @@ -468,16 +468,16 @@ static Image *ReadPDBImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x=0; x < (ssize_t) image->columns; x+=4) { - index=ConstrainColormapIndex(image,3UL-((*p >> 6) & 0x03)); + index=ConstrainColormapIndex(image,3UL-((*p >> 6) & 0x03),exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,3UL-((*p >> 4) & 0x03)); + index=ConstrainColormapIndex(image,3UL-((*p >> 4) & 0x03),exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,3UL-((*p >> 2) & 0x03)); + index=ConstrainColormapIndex(image,3UL-((*p >> 2) & 0x03),exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,3UL-((*p) & 0x03)); + index=ConstrainColormapIndex(image,3UL-((*p) & 0x03),exception); SetPixelIndex(image,index,q); p++; q+=GetPixelChannels(image); @@ -504,10 +504,10 @@ static Image *ReadPDBImage(const ImageInfo *image_info,ExceptionInfo *exception) break; for (x=0; x < (ssize_t) image->columns; x+=2) { - index=ConstrainColormapIndex(image,15UL-((*p >> 4) & 0x0f)); + index=ConstrainColormapIndex(image,15UL-((*p >> 4) & 0x0f),exception); SetPixelIndex(image,index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,15UL-((*p) & 0x0f)); + index=ConstrainColormapIndex(image,15UL-((*p) & 0x0f),exception); SetPixelIndex(image,index,q); p++; q+=GetPixelChannels(image); diff --git a/coders/pict.c b/coders/pict.c index 4a805ffdb..95c2f1c07 100644 --- a/coders/pict.c +++ b/coders/pict.c @@ -427,7 +427,8 @@ static unsigned char *ExpandBuffer(unsigned char *pixels, } static unsigned char *DecodeImage(Image *blob,Image *image, - size_t bytes_per_line,const unsigned int bits_per_pixel,size_t *extent) + size_t bytes_per_line,const unsigned int bits_per_pixel,size_t *extent, + ExceptionInfo *exception) { MagickSizeType number_pixels; @@ -501,7 +502,7 @@ static unsigned char *DecodeImage(Image *blob,Image *image, p=ExpandBuffer(scanline,&number_pixels,bits_per_pixel); if ((q+number_pixels) > (pixels+(*extent))) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"UnableToUncompressImage","`%s'", image->filename); break; @@ -523,7 +524,7 @@ static unsigned char *DecodeImage(Image *blob,Image *image, scanline_length=1UL*ReadBlobByte(blob); if (scanline_length >= row_bytes) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"UnableToUncompressImage","`%s'",image->filename); break; } @@ -1144,10 +1145,11 @@ static Image *ReadPICTImage(const ImageInfo *image_info, } if ((code != 0x9a) && (code != 0x9b) && (bytes_per_line & 0x8000) == 0) - pixels=DecodeImage(image,tile_image,1UL*bytes_per_line,1,&extent); + pixels=DecodeImage(image,tile_image,1UL*bytes_per_line,1,&extent, + exception); else pixels=DecodeImage(image,tile_image,1UL*bytes_per_line,1U* - pixmap.bits_per_pixel,&extent); + pixmap.bits_per_pixel,&extent,exception); if (pixels == (unsigned char *) NULL) { tile_image=DestroyImage(tile_image); @@ -1170,7 +1172,7 @@ static Image *ReadPICTImage(const ImageInfo *image_info, { if (tile_image->storage_class == PseudoClass) { - index=ConstrainColormapIndex(tile_image,*p); + index=ConstrainColormapIndex(tile_image,*p,exception); SetPixelIndex(tile_image,index,q); SetPixelRed(tile_image, tile_image->colormap[(ssize_t) index].red,q); diff --git a/coders/plasma.c b/coders/plasma.c index a6cfe10ac..914c284ac 100644 --- a/coders/plasma.c +++ b/coders/plasma.c @@ -98,18 +98,14 @@ static inline size_t MagickMax(const size_t x,const size_t y) } static inline void PlasmaPixel(Image *image,RandomInfo *random_info,double x, - double y) + double y,ExceptionInfo *exception) { - ExceptionInfo - *exception; - QuantumAny range; register Quantum *q; - exception=(&image->exception); q=GetAuthenticPixels(image,(ssize_t) ceil(x-0.5),(ssize_t) ceil(y-0.5),1,1, exception); if (q == (Quantum *) NULL) @@ -193,20 +189,20 @@ static Image *ReadPlasmaImage(const ImageInfo *image_info, Seed pixels before recursion. */ random_info=AcquireRandomInfo(); - PlasmaPixel(image,random_info,segment_info.x1,segment_info.y1); + PlasmaPixel(image,random_info,segment_info.x1,segment_info.y1,exception); PlasmaPixel(image,random_info,segment_info.x1,(segment_info.y1+ - segment_info.y2)/2); - PlasmaPixel(image,random_info,segment_info.x1,segment_info.y2); + segment_info.y2)/2,exception); + PlasmaPixel(image,random_info,segment_info.x1,segment_info.y2,exception); PlasmaPixel(image,random_info,(segment_info.x1+segment_info.x2)/2, - segment_info.y1); + segment_info.y1,exception); PlasmaPixel(image,random_info,(segment_info.x1+segment_info.x2)/2, - (segment_info.y1+segment_info.y2)/2); + (segment_info.y1+segment_info.y2)/2,exception); PlasmaPixel(image,random_info,(segment_info.x1+segment_info.x2)/2, - segment_info.y2); - PlasmaPixel(image,random_info,segment_info.x2,segment_info.y1); + segment_info.y2,exception); + PlasmaPixel(image,random_info,segment_info.x2,segment_info.y1,exception); PlasmaPixel(image,random_info,segment_info.x2,(segment_info.y1+ - segment_info.y2)/2); - PlasmaPixel(image,random_info,segment_info.x2,segment_info.y2); + segment_info.y2)/2,exception); + PlasmaPixel(image,random_info,segment_info.x2,segment_info.y2,exception); random_info=DestroyRandomInfo(random_info); } i=(size_t) MagickMax(image->columns,image->rows)/2; diff --git a/coders/png.c b/coders/png.c index e67d6841d..1dfb11c0c 100644 --- a/coders/png.c +++ b/coders/png.c @@ -947,7 +947,7 @@ static MagickBooleanType #if (MAGICKCORE_QUANTUM_DEPTH >= 16) static MagickBooleanType -LosslessReduceDepthOK(Image *image) +LosslessReduceDepthOK(Image *image,ExceptionInfo *exception) { /* Reduce bit depth if it can be reduced losslessly from 16+ to 8. * @@ -1009,7 +1009,7 @@ LosslessReduceDepthOK(Image *image) for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) { @@ -1127,7 +1127,7 @@ static inline ssize_t MagickMin(const ssize_t x,const ssize_t y) % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% */ -static MagickBooleanType ImageIsGray(Image *image) +static MagickBooleanType ImageIsGray(Image *image,ExceptionInfo *exception) { register const Quantum *p; @@ -1151,7 +1151,7 @@ static MagickBooleanType ImageIsGray(Image *image) } for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) return(MagickFalse); for (x=(ssize_t) image->columns-1; x >= 0; x--) @@ -1720,19 +1720,35 @@ static long mng_get_long(unsigned char *p) return((long) ((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3])); } +typedef struct _PNGErrorInfo +{ + Image + *image; + + ExceptionInfo + *exception; +} PNGErrorInfo; + static void MagickPNGErrorHandler(png_struct *ping,png_const_charp message) { + ExceptionInfo + *exception; + Image *image; - image=(Image *) png_get_error_ptr(ping); + PNGErrorInfo + *error_info; - if (image->debug != MagickFalse) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " libpng-%s error: %s", PNG_LIBPNG_VER_STRING,message); + error_info=(PNGErrorInfo *) png_get_error_ptr(ping); + image=error_info->image; + exception=error_info->exception; - (void) ThrowMagickException(&image->exception,GetMagickModule(),CoderError, - message,"`%s'",image->filename); + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " libpng-%s error: %s", PNG_LIBPNG_VER_STRING,message); + + (void) ThrowMagickException(exception,GetMagickModule(),CoderError,message, + "`%s'",image->filename); #if (PNG_LIBPNG_VER < 10500) /* A warning about deprecated use of jmpbuf here is unavoidable if you @@ -1746,18 +1762,25 @@ static void MagickPNGErrorHandler(png_struct *ping,png_const_charp message) static void MagickPNGWarningHandler(png_struct *ping,png_const_charp message) { + ExceptionInfo + *exception; + Image *image; + PNGErrorInfo + *error_info; + if (LocaleCompare(message, "Missing PLTE before tRNS") == 0) png_error(ping, message); - image=(Image *) png_get_error_ptr(ping); - if (image->debug != MagickFalse) - (void) LogMagickEvent(CoderEvent,GetMagickModule(), - " libpng-%s warning: %s", PNG_LIBPNG_VER_STRING,message); + error_info=(PNGErrorInfo *) png_get_error_ptr(ping); + image=error_info->image; + exception=error_info->exception; + (void) LogMagickEvent(CoderEvent,GetMagickModule(), + " libpng-%s warning: %s", PNG_LIBPNG_VER_STRING,message); - (void) ThrowMagickException(&image->exception,GetMagickModule(),CoderWarning, + (void) ThrowMagickException(exception,GetMagickModule(),CoderWarning, message,"`%s'",image->filename); } @@ -1844,7 +1867,7 @@ Magick_png_read_raw_profile(Image *image, const ImageInfo *image_info, /* allocate space */ if (length == 0) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderWarning,"UnableToCopyProfile","`%s'","invalid profile length"); return(MagickFalse); } @@ -1853,7 +1876,7 @@ Magick_png_read_raw_profile(Image *image, const ImageInfo *image_info, if (profile == (StringInfo *) NULL) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'", "unable to copy profile"); return(MagickFalse); @@ -1869,7 +1892,7 @@ Magick_png_read_raw_profile(Image *image, const ImageInfo *image_info, { if (*sp == '\0') { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderWarning,"UnableToCopyProfile","`%s'","ran out of data"); profile=DestroyStringInfo(profile); return(MagickFalse); @@ -2000,13 +2023,16 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, double file_gamma; - PixelInfo - transparent_color; - MagickBooleanType logging, status; + PixelInfo + transparent_color; + + PNGErrorInfo + error_info; + png_bytep ping_trans_alpha; @@ -2115,11 +2141,13 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, Allocate the PNG structures */ #ifdef PNG_USER_MEM_SUPPORTED - ping=png_create_read_struct_2(PNG_LIBPNG_VER_STRING, image, + error_info.image=image; + error_info.exception=exception; + ping=png_create_read_struct_2(PNG_LIBPNG_VER_STRING,&error_info, MagickPNGErrorHandler,MagickPNGWarningHandler, NULL, (png_malloc_ptr) Magick_png_malloc,(png_free_ptr) Magick_png_free); #else - ping=png_create_read_struct(PNG_LIBPNG_VER_STRING,image, + ping=png_create_read_struct(PNG_LIBPNG_VER_STRING,&error_info, MagickPNGErrorHandler,MagickPNGWarningHandler); #endif if (ping == (png_struct *) NULL) @@ -2158,7 +2186,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, if (image != (Image *) NULL) { - InheritException(exception,&image->exception); + InheritException(exception,exception); image->columns=0; } @@ -2299,7 +2327,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, profile=BlobToStringInfo(info,profile_length); if (profile == (StringInfo *) NULL) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'", "unable to copy profile"); return((Image *) NULL); @@ -2455,7 +2483,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, { if (mng_info->global_trns_length > mng_info->global_plte_length) - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderError, "global tRNS has more entries than global PLTE", "`%s'",image_info->filename); @@ -2496,7 +2524,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, #endif } else - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"No global PLTE in file","`%s'", image_info->filename); } @@ -2846,7 +2874,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, if (image != (Image *) NULL) { - InheritException(exception,&image->exception); + InheritException(exception,exception); image->columns=0; } @@ -3362,7 +3390,7 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, sizeof(*value)); if (value == (char *) NULL) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'", image->filename); break; @@ -3417,12 +3445,12 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, mng_info->ob[object_id]->frozen) { if (mng_info->ob[object_id] == (MngBuffer *) NULL) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"MemoryAllocationFailed","`%s'", image->filename); if (mng_info->ob[object_id]->frozen) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"Cannot overwrite frozen MNG object buffer", "`%s'",image->filename); } @@ -3435,13 +3463,13 @@ static Image *ReadOnePNGImage(MngInfo *mng_info, (mng_info->ob[object_id]->image); mng_info->ob[object_id]->image=CloneImage(image,0,0,MagickTrue, - &image->exception); + exception); if (mng_info->ob[object_id]->image != (Image *) NULL) mng_info->ob[object_id]->image->file=(FILE *) NULL; else - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), ResourceLimitError,"Cloning image for object buffer failed", "`%s'",image->filename); @@ -4335,7 +4363,7 @@ static Image *ReadOneJNGImage(MngInfo *mng_info, for (y=0; y < (ssize_t) image->rows; y++) { - s=GetVirtualPixels(jng_image,0,y,image->columns,1,&image->exception); + s=GetVirtualPixels(jng_image,0,y,image->columns,1,exception); q=GetAuthenticPixels(image,0,y,image->columns,1,exception); for (x=(ssize_t) image->columns; x != 0; x--) { @@ -4382,7 +4410,7 @@ static Image *ReadOneJNGImage(MngInfo *mng_info, for (y=0; y < (ssize_t) image->rows; y++) { s=GetVirtualPixels(jng_image,0,y,image->columns,1, - &image->exception); + exception); q=GetAuthenticPixels(image,0,y,image->columns,1,exception); if (image->matte != MagickFalse) @@ -4804,7 +4832,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) skip_to_iend=MagickTrue; if (mng_info->jhdr_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"JNGCompressNotSupported","`%s'",image->filename); mng_info->jhdr_warning++; @@ -4815,7 +4843,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) skip_to_iend=MagickTrue; if (mng_info->dhdr_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"DeltaPNGNotSupported","`%s'",image->filename); mng_info->dhdr_warning++; @@ -4957,14 +4985,14 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (memcmp(type,mng_DEFI,4) == 0) { if (mng_type == 3) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"DEFI chunk found in MNG-VLC datastream","`%s'", image->filename); object_id=(p[0] << 8) | p[1]; if (mng_type == 2 && object_id != 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"Nonzero object_id in MNG-LC datastream","`%s'", image->filename); @@ -4974,7 +5002,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) Instead ofsuing a warning we should allocate a larger MngInfo structure and continue. */ - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"object id too large","`%s'",image->filename); object_id=MNG_MAX_OBJECTS; } @@ -4983,7 +5011,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (mng_info->frozen[object_id]) { chunk=(unsigned char *) RelinquishMagickMemory(chunk); - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderError, "DEFI cannot redefine a frozen MNG object","`%s'", image->filename); @@ -5215,7 +5243,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (memcmp(type,mng_FRAM,4) == 0) { if (mng_type == 3) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"FRAM chunk found in MNG-VLC datastream","`%s'", image->filename); @@ -5581,7 +5609,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (memcmp(type,mng_CLON,4) == 0) { if (mng_info->clon_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"CLON is not implemented yet","`%s'", image->filename); @@ -5617,7 +5645,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (magn_first || magn_last) if (mng_info->magn_warning == 0) { - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderError, "MAGN is not implemented yet for nonzero objects", "`%s'",image->filename); @@ -5695,7 +5723,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (magn_methx > 5 || magn_methy > 5) if (mng_info->magn_warning == 0) { - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderError, "Unknown MAGN method in MNG datastream","`%s'", image->filename); @@ -5722,7 +5750,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (memcmp(type,mng_PAST,4) == 0) { if (mng_info->past_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"PAST is not implemented yet","`%s'", image->filename); @@ -5732,7 +5760,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (memcmp(type,mng_SHOW,4) == 0) { if (mng_info->show_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"SHOW is not implemented yet","`%s'", image->filename); @@ -5772,7 +5800,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (memcmp(type,mng_pHYg,4) == 0) { if (mng_info->phyg_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"pHYg is not implemented.","`%s'",image->filename); mng_info->phyg_warning++; @@ -5782,7 +5810,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) skip_to_iend=MagickTrue; if (mng_info->basi_warning == 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"BASI is not implemented yet","`%s'", image->filename); @@ -6721,12 +6749,10 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) #endif #if (MAGICKCORE_QUANTUM_DEPTH > 8) - if (LosslessReduceDepthOK(image) != MagickFalse) + if (LosslessReduceDepthOK(image,exception) != MagickFalse) image->depth = 8; #endif - GetImageException(image,exception); - if (image_info->number_scenes != 0) { if (mng_info->scenes_found > @@ -6804,7 +6830,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (logging != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule()," No beginning"); - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"Linked list is corrupted, beginning of list not found", "`%s'",image_info->filename); @@ -6818,7 +6844,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) if (logging != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule()," Corrupt list"); - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"Linked list is corrupted; next_image is NULL","`%s'", image_info->filename); } @@ -6832,7 +6858,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) (void) LogMagickEvent(CoderEvent,GetMagickModule(), " First image null"); - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"image->next for first image is NULL but shouldn't be.", "`%s'",image_info->filename); } @@ -6843,7 +6869,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) (void) LogMagickEvent(CoderEvent,GetMagickModule(), " No visible images found."); - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"No visible images in file","`%s'",image_info->filename); if (image != (Image *) NULL) @@ -6918,7 +6944,7 @@ static Image *ReadMNGImage(const ImageInfo *image_info,ExceptionInfo *exception) (void) LogMagickEvent(CoderEvent,GetMagickModule()," Coalesce Images"); scene=image->scene; - next_image=CoalesceImages(image,&image->exception); + next_image=CoalesceImages(image,exception); if (next_image == (Image *) NULL) ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed"); @@ -7517,6 +7543,9 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, QuantumInfo *quantum_info; + PNGErrorInfo + error_info; + register ssize_t i, x; @@ -7557,7 +7586,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, logging=LogMagickEvent(CoderEvent,GetMagickModule(), " Enter WriteOnePNGImage()"); - image = CloneImage(IMimage,0,0,MagickFalse,&IMimage->exception); + image = CloneImage(IMimage,0,0,MagickFalse,exception); image_info=(ImageInfo *) CloneImageInfo(IMimage_info); if (image_info == (ImageInfo *) NULL) ThrowWriterException(ResourceLimitError, "MemoryAllocationFailed"); @@ -7761,11 +7790,6 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, register Quantum *r; - ExceptionInfo - *exception; - - exception=(&image->exception); - if (image->depth > 8) { #if MAGICKCORE_QUANTUM_DEPTH > 16 @@ -7808,8 +7832,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, for (y=0; y < (ssize_t) image->rows; y++) { - r=GetAuthenticPixels(image,0,y,image->columns,1, - exception); + r=GetAuthenticPixels(image,0,y,image->columns,1,exception); if (r == (Quantum *) NULL) break; @@ -7944,7 +7967,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, #if (MAGICKCORE_QUANTUM_DEPTH > 8) if (image->depth == 16 && mng_info->write_png_depth != 16) - if (mng_info->write_png8 || LosslessReduceDepthOK(image) != MagickFalse) + if (mng_info->write_png8 || LosslessReduceDepthOK(image,exception) != MagickFalse) image->depth = 8; #endif @@ -7985,9 +8008,6 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, * we need to check for bogus non-opaque values, at least. */ - ExceptionInfo - *exception; - int n; @@ -8063,8 +8083,6 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, " Regenerate the colormap"); } - exception=(&image->exception); - image_colors=0; number_opaque = 0; number_semitransparent = 0; @@ -8782,14 +8800,9 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, else if (image_colors == 0 || image_colors > 256 || image->colormap == NULL) { - ExceptionInfo - *exception; - register const Quantum *q; - exception=(&image->exception); - for (y=0; y < (ssize_t) image->rows; y++) { q=GetVirtualPixels(image,0,y,image->columns,1, exception); @@ -8863,8 +8876,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, { image_info=DestroyImageInfo(image_info); image=DestroyImage(image); - (void) ThrowMagickException(&IMimage->exception, - GetMagickModule(),CoderError, + (void) ThrowMagickException(exception,GetMagickModule(),CoderError, "Cannot write PNG8 or color-type 3; colormap is NULL", "`%s'",IMimage->filename); #if defined(PNG_SETJMP_NOT_THREAD_SAFE) @@ -8877,12 +8889,14 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, Allocate the PNG structures */ #ifdef PNG_USER_MEM_SUPPORTED - ping=png_create_write_struct_2(PNG_LIBPNG_VER_STRING,image, + error_info.image=image; + error_info.exception=exception; + ping=png_create_write_struct_2(PNG_LIBPNG_VER_STRING,&error_info, MagickPNGErrorHandler,MagickPNGWarningHandler,(void *) NULL, (png_malloc_ptr) Magick_png_malloc,(png_free_ptr) Magick_png_free); #else - ping=png_create_write_struct(PNG_LIBPNG_VER_STRING,image, + ping=png_create_write_struct(PNG_LIBPNG_VER_STRING,&error_info, MagickPNGErrorHandler,MagickPNGWarningHandler); #endif @@ -9273,7 +9287,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, if (image->colors == 0) { /* DO SOMETHING */ - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderError, "image has 0 colors", "`%s'",""); } @@ -10189,7 +10203,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, if (mng_info->need_blob != MagickFalse) { - if (OpenBlob(image_info,image,WriteBinaryBlobMode,&image->exception) == + if (OpenBlob(image_info,image,WriteBinaryBlobMode,exception) == MagickFalse) png_error(ping,"WriteBlob Failed"); @@ -10359,7 +10373,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Writing row of pixels (0)"); - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; @@ -10367,7 +10381,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, if (mng_info->IsPalette) { (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,GrayQuantum,ping_pixels,&image->exception); + quantum_info,GrayQuantum,ping_pixels,exception); if (mng_info->write_png_colortype-1 == PNG_COLOR_TYPE_PALETTE && mng_info->write_png_depth && mng_info->write_png_depth != old_bit_depth) @@ -10382,7 +10396,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, else { (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,RedQuantum,ping_pixels,&image->exception); + quantum_info,RedQuantum,ping_pixels,exception); } if (mng_info->write_png_colortype-1 != PNG_COLOR_TYPE_PALETTE) @@ -10421,7 +10435,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; @@ -10430,11 +10444,11 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, { if (mng_info->IsPalette) (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,GrayQuantum,ping_pixels,&image->exception); + quantum_info,GrayQuantum,ping_pixels,exception); else (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,RedQuantum,ping_pixels,&image->exception); + quantum_info,RedQuantum,ping_pixels,exception); if (logging != MagickFalse && y == 0) (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -10448,7 +10462,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, " Writing GRAY_ALPHA PNG pixels (2)"); (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,GrayAlphaQuantum,ping_pixels,&image->exception); + quantum_info,GrayAlphaQuantum,ping_pixels,exception); } if (logging != MagickFalse && y == 0) @@ -10481,7 +10495,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, for (y=0; y < (ssize_t) image->rows; y++) { p=GetVirtualPixels(image,0,y,image->columns,1, - &image->exception); + exception); if (p == (const Quantum *) NULL) break; @@ -10490,18 +10504,18 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, { if (image->storage_class == DirectClass) (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,RedQuantum,ping_pixels,&image->exception); + quantum_info,RedQuantum,ping_pixels,exception); else (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,GrayQuantum,ping_pixels,&image->exception); + quantum_info,GrayQuantum,ping_pixels,exception); } else if (ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { (void) ExportQuantumPixels(image,(CacheView *) NULL, quantum_info,GrayAlphaQuantum,ping_pixels, - &image->exception); + exception); if (logging != MagickFalse && y == 0) (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -10510,11 +10524,11 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, else if (image_matte != MagickFalse) (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,RGBAQuantum,ping_pixels,&image->exception); + quantum_info,RGBAQuantum,ping_pixels,exception); else (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,RGBQuantum,ping_pixels,&image->exception); + quantum_info,RGBQuantum,ping_pixels,exception); if (logging != MagickFalse && y == 0) (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -10547,7 +10561,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, " pass %d, Image Is RGB, 16-bit GRAY, or GRAY_ALPHA",pass); p=GetVirtualPixels(image,0,y,image->columns,1, - &image->exception); + exception); if (p == (const Quantum *) NULL) break; @@ -10557,7 +10571,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, quantum_info->depth=image->depth; (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,GrayQuantum,ping_pixels,&image->exception); + quantum_info,GrayQuantum,ping_pixels,exception); } else if (ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA) @@ -10568,13 +10582,13 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, (void) ExportQuantumPixels(image,(CacheView *) NULL, quantum_info,GrayAlphaQuantum,ping_pixels, - &image->exception); + exception); } else { (void) ExportQuantumPixels(image,(CacheView *) NULL, - quantum_info,IndexQuantum,ping_pixels,&image->exception); + quantum_info,IndexQuantum,ping_pixels,exception); if (logging != MagickFalse && y <= 2) { @@ -10748,7 +10762,7 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, } if (mng_info->write_mng && !mng_info->need_fram && ((int) image->dispose == 3)) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CoderError,"Cannot convert GIF with disposal method 3 to MNG-LC", "`%s'",image->filename); @@ -11038,7 +11052,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, mng_info->write_png_depth = 16; else - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderWarning, "ignoring invalid defined png:bit-depth", "=%s",value); @@ -11069,7 +11083,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, mng_info->write_png_colortype = 7; else - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderWarning, "ignoring invalid defined png:color-type", "=%s",value); @@ -11181,7 +11195,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, mng_info->write_png_compression_level = 10; else - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderWarning, "ignoring invalid defined png:compression-level", "=%s",value); @@ -11217,7 +11231,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, #endif else - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderWarning, "ignoring invalid defined png:compression-strategy", "=%s",value); @@ -11255,7 +11269,7 @@ static MagickBooleanType WritePNGImage(const ImageInfo *image_info, mng_info->write_png_compression_filter = 6; else - (void) ThrowMagickException(&image->exception, + (void) ThrowMagickException(exception, GetMagickModule(),CoderWarning, "ignoring invalid defined png:compression-filter", "=%s",value); @@ -11669,7 +11683,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Creating jpeg_image."); - jpeg_image=CloneImage(image,0,0,MagickTrue,&image->exception); + jpeg_image=CloneImage(image,0,0,MagickTrue,exception); if (jpeg_image == (Image *) NULL) ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed"); @@ -11697,7 +11711,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, /* Check if image is grayscale. */ if (image_info->type != TrueColorMatteType && image_info->type != - TrueColorType && ImageIsGray(image)) + TrueColorType && ImageIsGray(image,exception)) jng_color_type-=2; if (transparent) @@ -11709,7 +11723,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, /* Encode alpha as a grayscale PNG blob */ status=OpenBlob(jpeg_image_info,jpeg_image,WriteBinaryBlobMode, - &image->exception); + exception); if (logging != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Creating PNG blob."); @@ -11720,7 +11734,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, jpeg_image_info->interlace=NoInterlace; blob=ImageToBlob(jpeg_image_info,jpeg_image,&length, - &image->exception); + exception); /* Retrieve sample depth used */ value=GetImageProperty(jpeg_image,"png:bit-depth-written",exception); @@ -11732,7 +11746,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, /* Encode alpha as a grayscale JPEG blob */ status=OpenBlob(jpeg_image_info,jpeg_image,WriteBinaryBlobMode, - &image->exception); + exception); (void) CopyMagickString(jpeg_image_info->magick,"JPEG",MaxTextExtent); (void) CopyMagickString(jpeg_image->magick,"JPEG",MaxTextExtent); @@ -11741,7 +11755,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Creating blob."); blob=ImageToBlob(jpeg_image_info,jpeg_image,&length, - &image->exception); + exception); jng_alpha_sample_depth=8; if (logging != MagickFalse) @@ -12056,7 +12070,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Creating jpeg_image."); - jpeg_image=CloneImage(image,0,0,MagickTrue,&image->exception); + jpeg_image=CloneImage(image,0,0,MagickTrue,exception); if (jpeg_image == (Image *) NULL) ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed"); (void) CopyMagickString(jpeg_image->magick,"JPEG",MaxTextExtent); @@ -12066,7 +12080,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, jpeg_image->filename); status=OpenBlob(jpeg_image_info,jpeg_image,WriteBinaryBlobMode, - &image->exception); + exception); if (logging != MagickFalse) (void) LogMagickEvent(CoderEvent,GetMagickModule(), @@ -12084,7 +12098,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info, (void) LogMagickEvent(CoderEvent,GetMagickModule(), " Creating blob."); - blob=ImageToBlob(jpeg_image_info,jpeg_image,&length,&image->exception); + blob=ImageToBlob(jpeg_image_info,jpeg_image,&length,exception); if (logging != MagickFalse) { @@ -12177,7 +12191,7 @@ static MagickBooleanType WriteJNGImage(const ImageInfo *image_info,Image *image, assert(image->signature == MagickSignature); (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); logging=LogMagickEvent(CoderEvent,GetMagickModule(),"Enter WriteJNGImage()"); - status=OpenBlob(image_info,image,WriteBinaryBlobMode,&image->exception); + status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception); if (status == MagickFalse) return(status); @@ -12273,7 +12287,7 @@ static MagickBooleanType WriteMNGImage(const ImageInfo *image_info,Image *image, assert(image->signature == MagickSignature); (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); logging=LogMagickEvent(CoderEvent,GetMagickModule(),"Enter WriteMNGImage()"); - status=OpenBlob(image_info,image,WriteBinaryBlobMode,&image->exception); + status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception); if (status == MagickFalse) return(status); @@ -12460,7 +12474,7 @@ static MagickBooleanType WriteMNGImage(const ImageInfo *image_info,Image *image, if (need_local_plte == 0) { - if (ImageIsGray(image) == MagickFalse) + if (ImageIsGray(image,exception) == MagickFalse) all_images_are_gray=MagickFalse; mng_info->equal_palettes=PalettesAreEqual(image,next_image); if (use_global_plte == 0) @@ -12544,8 +12558,8 @@ static MagickBooleanType WriteMNGImage(const ImageInfo *image_info,Image *image, if (mng_info->adjoin) { final_delay=10; - (void) ThrowMagickException(&image->exception, - GetMagickModule(),CoderWarning, + (void) ThrowMagickException(exception,GetMagickModule(), + CoderWarning, "input has zero delay between all frames; assuming", " 10 cs `%s'",""); } diff --git a/coders/pnm.c b/coders/pnm.c index ba155cc46..5b715547e 100644 --- a/coders/pnm.c +++ b/coders/pnm.c @@ -137,12 +137,12 @@ static MagickBooleanType IsPNM(const unsigned char *magick,const size_t extent) */ static inline ssize_t ConstrainPixel(Image *image,const ssize_t offset, - const size_t extent) + const size_t extent,ExceptionInfo *exception) { if ((offset < 0) || (offset > (ssize_t) extent)) { - (void) ThrowMagickException(&image->exception,GetMagickModule(), - CorruptImageError,"InvalidPixel","`%s'",image->filename); + (void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError, + "InvalidPixel","`%s'",image->filename); return(0); } return(offset); @@ -500,7 +500,7 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) SetPixelRed(image,intensity,q); if (scale != (Quantum *) NULL) SetPixelRed(image,scale[ConstrainPixel(image,(ssize_t) intensity, - max_value)],q); + max_value,exception)],q); SetPixelGreen(image,GetPixelRed(image,q),q); SetPixelBlue(image,GetPixelRed(image,q),q); q+=GetPixelChannels(image); @@ -560,11 +560,11 @@ static Image *ReadPNMImage(const ImageInfo *image_info,ExceptionInfo *exception) if (scale != (Quantum *) NULL) { pixel.red=(MagickRealType) scale[ConstrainPixel(image,(ssize_t) - pixel.red,max_value)]; + pixel.red,max_value,exception)]; pixel.green=(MagickRealType) scale[ConstrainPixel(image, - (ssize_t) pixel.green,max_value)]; + (ssize_t) pixel.green,max_value,exception)]; pixel.blue=(MagickRealType) scale[ConstrainPixel(image,(ssize_t) - pixel.blue,max_value)]; + pixel.blue,max_value,exception)]; } SetPixelRed(image,ClampToQuantum(pixel.red),q); SetPixelGreen(image,ClampToQuantum(pixel.green),q); diff --git a/coders/ps.c b/coders/ps.c index dc8d21981..8267d4f36 100644 --- a/coders/ps.c +++ b/coders/ps.c @@ -682,7 +682,7 @@ static Image *ReadPSImage(const ImageInfo *image_info,ExceptionInfo *exception) file=AcquireUniqueFileResource(postscript_filename); if (file == -1) { - ThrowFileException(&image->exception,FileOpenError,"UnableToOpenFile", + ThrowFileException(exception,FileOpenError,"UnableToOpenFile", image_info->filename); image=DestroyImageList(image); return((Image *) NULL); diff --git a/coders/ps3.c b/coders/ps3.c index 151468215..8df9d622b 100644 --- a/coders/ps3.c +++ b/coders/ps3.c @@ -266,7 +266,7 @@ static MagickBooleanType SerializeImage(const ImageInfo *image_info, q=(*pixels); for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; if (image->colorspace != CMYKColorspace) @@ -330,7 +330,7 @@ static MagickBooleanType SerializeImageChannel(const ImageInfo *image_info, if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); status=MagickTrue; - pack=IsImageMonochrome(image,&image->exception) == MagickFalse ? 1UL : 8UL; + pack=IsImageMonochrome(image,exception) == MagickFalse ? 1UL : 8UL; padded_columns=((image->columns+pack-1)/pack)*pack; *length=(size_t) padded_columns*image->rows/pack; *pixels=(unsigned char *) AcquireQuantumMemory(*length,sizeof(**pixels)); @@ -518,9 +518,9 @@ static MagickBooleanType WritePS3MaskImage(const ImageInfo *image_info, } (void) WriteBlobString(image,buffer); (void) WriteBlobString(image,"/ReusableStreamDecode filter\n"); - mask_image=CloneImage(image,0,0,MagickTrue,&image->exception); + mask_image=CloneImage(image,0,0,MagickTrue,exception); if (mask_image == (Image *) NULL) - ThrowWriterException(CoderError,image->exception.reason); + ThrowWriterException(CoderError,exception->reason); channel_mask=SetPixelChannelMask(mask_image,AlphaChannel); status=SeparateImage(mask_image,exception); (void) SetPixelChannelMap(mask_image,channel_mask); diff --git a/coders/psd.c b/coders/psd.c index f6d0c6b96..c1fa4b8e6 100644 --- a/coders/psd.c +++ b/coders/psd.c @@ -826,7 +826,6 @@ static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception) image->rows=psd_info.rows; if (SetImageBackgroundColor(image,exception) == MagickFalse) { - InheritException(exception,&image->exception); image=DestroyImageList(image); return((Image *) NULL); } @@ -1191,7 +1190,7 @@ static Image *ReadPSDImage(const ImageInfo *image_info,ExceptionInfo *exception) */ layer_info[i].image=CloneImage(image,layer_info[i].page.width, layer_info[i].page.height == ~0U ? 1 : layer_info[i].page.height, - MagickFalse,&image->exception); + MagickFalse,exception); if (layer_info[i].image == (Image *) NULL) { for (j=0; j < i; j++) @@ -1693,11 +1692,11 @@ static void WritePackbitsLength(const PSDInfo *psd_info, pixels=GetQuantumPixels(quantum_info); for (y=0; y < (ssize_t) next_image->rows; y++) { - p=GetVirtualPixels(next_image,0,y,next_image->columns,1,&image->exception); + p=GetVirtualPixels(next_image,0,y,next_image->columns,1,exception); if (p == (const Quantum *) NULL) break; length=ExportQuantumPixels(next_image,(CacheView *) NULL,quantum_info, - quantum_type,pixels,&image->exception); + quantum_type,pixels,exception); length=PSDPackbitsEncodeImage(image,length,pixels,compact_pixels, exception); (void) SetPSDOffset(psd_info,image,length); @@ -1738,19 +1737,19 @@ static void WriteOneChannel(const PSDInfo *psd_info,const ImageInfo *image_info, (void) WriteBlobMSBShort(image,0); if (next_image->depth > 8) next_image->depth=16; - monochrome=IsImageMonochrome(image,&image->exception) && (image->depth == 1) - ? MagickTrue : MagickFalse; + monochrome=IsImageMonochrome(image,exception) && (image->depth == 1) ? + MagickTrue : MagickFalse; packet_size=next_image->depth > 8UL ? 2UL : 1UL; (void) packet_size; quantum_info=AcquireQuantumInfo(image_info,image); pixels=GetQuantumPixels(quantum_info); for (y=0; y < (ssize_t) next_image->rows; y++) { - p=GetVirtualPixels(next_image,0,y,next_image->columns,1,&image->exception); + p=GetVirtualPixels(next_image,0,y,next_image->columns,1,exception); if (p == (const Quantum *) NULL) break; length=ExportQuantumPixels(next_image,(CacheView *) NULL,quantum_info, - quantum_type,pixels,&image->exception); + quantum_type,pixels,exception); if (monochrome != MagickFalse) for (i=0; i < (ssize_t) length; i++) pixels[i]=(~pixels[i]); @@ -1794,7 +1793,7 @@ static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed"); } i=0; - if (IsImageGray(next_image,&next_image->exception) != MagickFalse) + if (IsImageGray(next_image,exception) != MagickFalse) { if (next_image->compression == RLECompression) { @@ -1844,7 +1843,7 @@ static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, else { if (next_image->colorspace == CMYKColorspace) - (void) NegateImage(next_image,MagickFalse,&next_image->exception); + (void) NegateImage(next_image,MagickFalse,exception); if (next_image->compression == RLECompression) { /* @@ -1888,7 +1887,7 @@ static MagickBooleanType WriteImageChannels(const PSDInfo *psd_info, MagickFalse,exception); (void) SetImageProgress(image,SaveImagesTag,5,6); if (next_image->colorspace == CMYKColorspace) - (void) NegateImage(next_image,MagickFalse,&next_image->exception); + (void) NegateImage(next_image,MagickFalse,exception); } if (next_image->compression == RLECompression) compact_pixels=(unsigned char *) RelinquishMagickMemory(compact_pixels); diff --git a/coders/raw.c b/coders/raw.c index 1ab908715..d81f9dee8 100644 --- a/coders/raw.c +++ b/coders/raw.c @@ -267,7 +267,6 @@ static Image *ReadRAWImage(const ImageInfo *image_info, scene++; } while (count == (ssize_t) length); quantum_info=DestroyQuantumInfo(quantum_info); - InheritException(&image->exception,&canvas_image->exception); canvas_image=DestroyImage(canvas_image); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/rgb.c b/coders/rgb.c index e97a7473d..2259c3862 100644 --- a/coders/rgb.c +++ b/coders/rgb.c @@ -951,7 +951,6 @@ static Image *ReadRGBImage(const ImageInfo *image_info, scene++; } while (count == (ssize_t) length); quantum_info=DestroyQuantumInfo(quantum_info); - InheritException(&image->exception,&canvas_image->exception); canvas_image=DestroyImage(canvas_image); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/sfw.c b/coders/sfw.c index 4c2c51640..262ccd07a 100644 --- a/coders/sfw.c +++ b/coders/sfw.c @@ -329,8 +329,8 @@ static Image *ReadSFWImage(const ImageInfo *image_info,ExceptionInfo *exception) (void) remove_utf8(read_info->filename); read_info=DestroyImageInfo(read_info); message=GetExceptionMessage(errno); - (void) ThrowMagickException(&image->exception,GetMagickModule(), - FileOpenError,"UnableToWriteFile","`%s': %s",image->filename,message); + (void) ThrowMagickException(exception,GetMagickModule(),FileOpenError, + "UnableToWriteFile","`%s': %s",image->filename,message); message=DestroyString(message); image=DestroyImageList(image); return((Image *) NULL); diff --git a/coders/svg.c b/coders/svg.c index b860c85c4..ddaaca4ed 100644 --- a/coders/svg.c +++ b/coders/svg.c @@ -3300,7 +3300,7 @@ static MagickBooleanType IsPoint(const char *point) return(p != point ? MagickTrue : MagickFalse); } -static MagickBooleanType TraceSVGImage(Image *image) +static MagickBooleanType TraceSVGImage(Image *image,ExceptionInfo *exception) { ssize_t y; @@ -3395,14 +3395,13 @@ static MagickBooleanType TraceSVGImage(Image *image) GetPixelInfo(image,&pixel); for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) { SetPixelInfo(image,p,&pixel); - (void) QueryColorname(image,&pixel,SVGCompliance,tuple, - &image->exception); + (void) QueryColorname(image,&pixel,SVGCompliance,tuple,exception); (void) FormatLocaleString(message,MaxTextExtent, " \n", (double) x,(double) y,tuple); @@ -3493,7 +3492,7 @@ static MagickBooleanType WriteSVGImage(const ImageInfo *image_info,Image *image, } value=GetImageArtifact(image,"MVG"); if (value == (char *) NULL) - return(TraceSVGImage(image)); + return(TraceSVGImage(image,exception)); /* Write SVG header. */ diff --git a/coders/tga.c b/coders/tga.c index 850b75ea6..a01dd89a9 100644 --- a/coders/tga.c +++ b/coders/tga.c @@ -390,7 +390,7 @@ static Image *ReadTGAImage(const ImageInfo *image_info,ExceptionInfo *exception) index=(Quantum) ReadBlobByte(image); if (tga_info.colormap_type != 0) pixel=image->colormap[(ssize_t) ConstrainColormapIndex(image, - 1UL*index)]; + 1UL*index,exception)]; else { pixel.red=ScaleCharToQuantum((unsigned char) index); @@ -419,7 +419,7 @@ static Image *ReadTGAImage(const ImageInfo *image_info,ExceptionInfo *exception) pixel.alpha=(k & 0x80) == 0 ? (Quantum) OpaqueAlpha : (Quantum) TransparentAlpha; if (image->storage_class == PseudoClass) - index=ConstrainColormapIndex(image,((size_t) k << 8)+j); + index=ConstrainColormapIndex(image,((size_t) k << 8)+j,exception); break; } case 24: diff --git a/coders/tiff.c b/coders/tiff.c index 23637f5bd..19348e4ba 100644 --- a/coders/tiff.c +++ b/coders/tiff.c @@ -1494,7 +1494,7 @@ static Image *ReadTIFFImage(const ImageInfo *image_info, TIFFClose(tiff); ThrowReaderException(CoderError,"ImageIsNotTiled"); } - (void) SetImageStorageClass(image,DirectClass,&image->exception); + (void) SetImageStorageClass(image,DirectClass,exception); number_pixels=columns*rows; tile_pixels=(uint32 *) AcquireQuantumMemory(number_pixels, sizeof(*tile_pixels)); diff --git a/coders/webp.c b/coders/webp.c index 6c32ed2ac..c5c51cfe3 100644 --- a/coders/webp.c +++ b/coders/webp.c @@ -335,7 +335,7 @@ static MagickBooleanType WriteWEBPImage(const ImageInfo *image_info, assert(image->signature == MagickSignature); if (image->debug != MagickFalse) (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - status=OpenBlob(image_info,image,WriteBinaryBlobMode,&image->exception); + status=OpenBlob(image_info,image,WriteBinaryBlobMode,exception); if (status == MagickFalse) return(status); if (WebPPictureInit(&picture) == 0) @@ -367,7 +367,7 @@ static MagickBooleanType WriteWEBPImage(const ImageInfo *image_info, q=pixels; for (y=0; y < (ssize_t) image->rows; y++) { - p=GetVirtualPixels(image,0,y,image->columns,1,&image->exception); + p=GetVirtualPixels(image,0,y,image->columns,1,exception); if (p == (const Quantum *) NULL) break; for (x=0; x < (ssize_t) image->columns; x++) diff --git a/coders/wpg.c b/coders/wpg.c index 3c2719be8..257c5e849 100644 --- a/coders/wpg.c +++ b/coders/wpg.c @@ -264,11 +264,9 @@ static void Rd_WP_DWORD(Image *image,size_t *d) return; } -static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) +static void InsertRow(Image *image,unsigned char *p,ssize_t y,int bpp, + ExceptionInfo *exception) { - ExceptionInfo - *exception; - int bit; @@ -281,7 +279,6 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) ssize_t x; - exception=(&image->exception); switch (bpp) { case 1: /* Convert bitmap scanline. */ @@ -322,19 +319,19 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) break; for (x=0; x < ((ssize_t) image->columns-1); x+=2) { - index=ConstrainColormapIndex(image,(*p >> 6) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 6) & 0x3,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p >> 4) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x3,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p >> 2) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 2) & 0x3,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p) & 0x3); + index=ConstrainColormapIndex(image,(*p) & 0x3,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); p++; @@ -342,21 +339,22 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) } if ((image->columns % 4) != 0) { - index=ConstrainColormapIndex(image,(*p >> 6) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 6) & 0x3,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); if ((image->columns % 4) >= 1) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x3,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); if ((image->columns % 4) >= 2) { - index=ConstrainColormapIndex(image,(*p >> 2) & 0x3); + index=ConstrainColormapIndex(image,(*p >> 2) & 0x3, + exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); @@ -376,11 +374,11 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) break; for (x=0; x < ((ssize_t) image->columns-1); x+=2) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); - index=ConstrainColormapIndex(image,(*p) & 0x0f); + index=ConstrainColormapIndex(image,(*p) & 0x0f,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); p++; @@ -388,7 +386,7 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) } if ((image->columns % 2) != 0) { - index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f); + index=ConstrainColormapIndex(image,(*p >> 4) & 0x0f,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); p++; @@ -405,7 +403,7 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) for (x=0; x < (ssize_t) image->columns; x++) { - index=ConstrainColormapIndex(image,*p); + index=ConstrainColormapIndex(image,*p,exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); p++; @@ -441,13 +439,13 @@ static void InsertRow(unsigned char *p,ssize_t y,Image *image, int bpp) x++; \ if((ssize_t) x>=ldblk) \ { \ - InsertRow(BImgBuff,(ssize_t) y,image,bpp); \ + InsertRow(image,BImgBuff,(ssize_t) y,bpp,exception); \ x=0; \ y++; \ } \ } /* WPG1 raster reader. */ -static int UnpackWPGRaster(Image *image,int bpp) +static int UnpackWPGRaster(Image *image,int bpp,ExceptionInfo *exception) { int x, @@ -513,7 +511,7 @@ static int UnpackWPGRaster(Image *image,int bpp) BImgBuff=(unsigned char *) RelinquishMagickMemory(BImgBuff); return(-4); } - InsertRow(BImgBuff,y-1,image,bpp); + InsertRow(image,BImgBuff,y-1,bpp,exception); } } } @@ -533,13 +531,13 @@ static int UnpackWPGRaster(Image *image,int bpp) x++; \ if((ssize_t) x >= ldblk) \ { \ - InsertRow(BImgBuff,(ssize_t) y,image,bpp); \ + InsertRow(image,BImgBuff,(ssize_t) y,bpp,exception); \ x=0; \ y++; \ } \ } /* WPG2 raster reader. */ -static int UnpackWPG2Raster(Image *image,int bpp) +static int UnpackWPG2Raster(Image *image,int bpp,ExceptionInfo *exception) { size_t x, @@ -614,8 +612,8 @@ static int UnpackWPG2Raster(Image *image,int bpp) /* duplicate the previous row RunCount x */ for(i=0;i<=RunCount;i++) { - InsertRow(BImgBuff,(ssize_t) (image->rows >= y ? y : image->rows-1), - image,bpp); + InsertRow(image,BImgBuff,(ssize_t) (image->rows >= y ? y : image->rows-1), + bpp,exception); y++; } } @@ -1128,7 +1126,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, } } - if(UnpackWPGRaster(image,bpp) < 0) + if(UnpackWPGRaster(image,bpp,exception) < 0) /* The raster cannot be unpacked */ { DecompressionFailed: @@ -1300,7 +1298,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, for(i=0; i< (ssize_t) image->rows; i++) { (void) ReadBlob(image,ldblk,BImgBuff); - InsertRow(BImgBuff,i,image,bpp); + InsertRow(image,BImgBuff,i,bpp,exception); } if(BImgBuff) @@ -1309,7 +1307,7 @@ static Image *ReadWPGImage(const ImageInfo *image_info, } case 1: /*RLE for WPG2 */ { - if( UnpackWPG2Raster(image,bpp) < 0) + if( UnpackWPG2Raster(image,bpp,exception) < 0) goto DecompressionFailed; break; } diff --git a/coders/xcf.c b/coders/xcf.c index 53d86b789..2109f8671 100644 --- a/coders/xcf.c +++ b/coders/xcf.c @@ -295,7 +295,8 @@ static inline size_t MagickMin(const size_t x,const size_t y) return(y); } -static char *ReadBlobStringWithLongSize(Image *image,char *string,size_t max) +static char *ReadBlobStringWithLongSize(Image *image,char *string,size_t max, + ExceptionInfo *exception) { int c; @@ -325,7 +326,7 @@ static char *ReadBlobStringWithLongSize(Image *image,char *string,size_t max) string[i]='\0'; offset=SeekBlob(image,(MagickOffsetType) (length-i),SEEK_CUR); if (offset < 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"ImproperImageHeader","`%s'",image->filename); return(string); } @@ -436,7 +437,7 @@ static MagickBooleanType load_tile_rle(Image *image,Image *tile_image, xcfodata=xcfdata; count=ReadBlob(image, (size_t) data_length, xcfdata); xcfdatalimit = xcfodata+count-1; - exception=(&image->exception); + exception=(exception); for (i=0; i < (ssize_t) bytes_per_pixel; i++) { q=GetAuthenticPixels(tile_image,0,0,tile_image->columns,tile_image->rows, @@ -779,10 +780,10 @@ static MagickBooleanType ReadOneLayer(Image* image,XCFDocInfo* inDocInfo, outLayer->height = ReadBlobMSBLong(image); outLayer->type = ReadBlobMSBLong(image); (void) ReadBlobStringWithLongSize(image, outLayer->name, - sizeof(outLayer->name)); + sizeof(outLayer->name),exception); /* allocate the image for this layer */ outLayer->image=CloneImage(image,outLayer->width, outLayer->height,MagickTrue, - &image->exception); + exception); if (outLayer->image == (Image *) NULL) return MagickFalse; /* read the layer properties! */ @@ -835,7 +836,7 @@ static MagickBooleanType ReadOneLayer(Image* image,XCFDocInfo* inDocInfo, case PROP_PARASITES: { if (DiscardBlobBytes(image,prop_size) == MagickFalse) - ThrowFileException(&image->exception,CorruptImageError, + ThrowFileException(exception,CorruptImageError, "UnexpectedEndOfFile",image->filename); /* @@ -897,7 +898,7 @@ static MagickBooleanType ReadOneLayer(Image* image,XCFDocInfo* inDocInfo, /* read in the hierarchy */ offset=SeekBlob(image, (MagickOffsetType) hierarchy_offset, SEEK_SET); if (offset < 0) - (void) ThrowMagickException(&image->exception,GetMagickModule(), + (void) ThrowMagickException(exception,GetMagickModule(), CorruptImageError,"InvalidImageHeader","`%s'",image->filename); if (load_hierarchy (image, inDocInfo, outLayer) == 0) return(MagickFalse); @@ -1062,7 +1063,7 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) */ size_t num_colours = ReadBlobMSBLong(image); if (DiscardBlobBytes(image,3*num_colours) == MagickFalse) - ThrowFileException(&image->exception,CorruptImageError, + ThrowFileException(exception,CorruptImageError, "UnexpectedEndOfFile",image->filename); /* if (info->file_version == 0) @@ -1110,7 +1111,7 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) { /* just skip it - we don't care about guides */ if (DiscardBlobBytes(image,prop_size) == MagickFalse) - ThrowFileException(&image->exception,CorruptImageError, + ThrowFileException(exception,CorruptImageError, "UnexpectedEndOfFile",image->filename); } break; @@ -1150,7 +1151,7 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) { /* BOGUS: we may need these for IPTC stuff */ if (DiscardBlobBytes(image,prop_size) == MagickFalse) - ThrowFileException(&image->exception,CorruptImageError, + ThrowFileException(exception,CorruptImageError, "UnexpectedEndOfFile",image->filename); /* gssize_t base = info->cp; @@ -1179,8 +1180,8 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) { /* BOGUS: just skip it for now */ if (DiscardBlobBytes(image,prop_size) == MagickFalse) - ThrowFileException(&image->exception,CorruptImageError, - "UnexpectedEndOfFile",image->filename); + ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", + image->filename); /* PathList *paths = xcf_load_bzpaths (gimage, info); @@ -1197,7 +1198,7 @@ static Image *ReadXCFImage(const ImageInfo *image_info,ExceptionInfo *exception) /* size_t digits = */ (void) ReadBlobMSBLong(image); for (i=0; i<5; i++) (void) ReadBlobStringWithLongSize(image, unit_string, - sizeof(unit_string)); + sizeof(unit_string),exception); } break; diff --git a/coders/xps.c b/coders/xps.c index 65e6f6897..8e8c9d55e 100644 --- a/coders/xps.c +++ b/coders/xps.c @@ -328,7 +328,7 @@ static Image *ReadXPSImage(const ImageInfo *image_info,ExceptionInfo *exception) Image *cmyk_image; - cmyk_image=ConsolidateCMYKImages(image,&image->exception); + cmyk_image=ConsolidateCMYKImages(image,exception); if (cmyk_image != (Image *) NULL) { image=DestroyImageList(image); diff --git a/coders/xwd.c b/coders/xwd.c index b1be9aab6..ab47d874d 100644 --- a/coders/xwd.c +++ b/coders/xwd.c @@ -474,7 +474,7 @@ static Image *ReadXWDImage(const ImageInfo *image_info,ExceptionInfo *exception) for (x=0; x < (ssize_t) image->columns; x++) { index=ConstrainColormapIndex(image,XGetPixel(ximage,(int) x, - (int) y)); + (int) y),exception); SetPixelIndex(image,index,q); SetPixelPixelInfo(image,image->colormap+(ssize_t) index,q); q+=GetPixelChannels(image); diff --git a/coders/ycbcr.c b/coders/ycbcr.c index 342f30730..2ed4d5af5 100644 --- a/coders/ycbcr.c +++ b/coders/ycbcr.c @@ -848,7 +848,6 @@ static Image *ReadYCBCRImage(const ImageInfo *image_info, scene++; } while (count == (ssize_t) length); quantum_info=DestroyQuantumInfo(quantum_info); - InheritException(&image->exception,&canvas_image->exception); canvas_image=DestroyImage(canvas_image); (void) CloseBlob(image); return(GetFirstImageInList(image)); diff --git a/coders/yuv.c b/coders/yuv.c index ab67250d5..bfbb7e7be 100644 --- a/coders/yuv.c +++ b/coders/yuv.c @@ -399,7 +399,7 @@ static Image *ReadYUVImage(const ImageInfo *image_info,ExceptionInfo *exception) { q=GetAuthenticPixels(image,0,y,image->columns,1,exception); chroma_pixels=GetVirtualPixels(resize_image,0,y,resize_image->columns,1, - &resize_image->exception); + exception); if ((q == (Quantum *) NULL) || (chroma_pixels == (const Quantum *) NULL)) break; -- 2.40.0