From: Cristy Date: Mon, 24 Apr 2017 15:50:43 +0000 (-0400) Subject: ... X-Git-Tag: 7.0.5-5~3 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0722fe0e7de465d77e5753e07f81a444acc5aa34;p=imagemagick ... --- diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 3824930ee..21a27c5e1 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -3785,7 +3785,7 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, *magick_restrict clone_info; Image - *clone_image; + clone_image; MagickBooleanType status; @@ -3854,10 +3854,8 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, /* Clone persistent pixel cache. */ - clone_image=CloneImage(image,0,0,MagickTrue,exception); - if (clone_image == (Image *) NULL) - return(MagickFalse); - clone_info=(CacheInfo *) clone_image->cache; + clone_image=(*image); + clone_info=(CacheInfo *) clone_image.cache; image->cache=ClonePixelCache(cache_info); cache_info=(CacheInfo *) ReferencePixelCache(image->cache); (void) CopyMagickString(cache_info->cache_filename,filename,MagickPathExtent); @@ -3869,7 +3867,6 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, status=ClonePixelCacheRepository(cache_info,clone_info,exception); *offset+=cache_info->length+page_size-(cache_info->length % page_size); clone_info=(CacheInfo *) DestroyPixelCache(clone_info); - clone_image=DestroyImage(clone_image); return(status); } diff --git a/coders/mpc.c b/coders/mpc.c index f8efbb2d1..88e30eb71 100644 --- a/coders/mpc.c +++ b/coders/mpc.c @@ -1467,10 +1467,16 @@ static MagickBooleanType WriteMPCImage(const ImageInfo *image_info,Image *image, /* Initialize persistent pixel cache. */ - status=PersistPixelCache(image,cache_filename,MagickFalse,&offset, - exception); - if (status == MagickFalse) - ThrowWriterException(CacheError,"UnableToPersistPixelCache"); + { + Image *clone_image = CloneImage(image,0,0,MagickTrue,exception); + if (clone_image == (Image *) NULL) + ThrowWriterException(CacheError,"UnableToPersistPixelCache"); + status=PersistPixelCache(clone_image,cache_filename,MagickFalse,&offset, + exception); + clone_image=DestroyImage(clone_image); + if (status == MagickFalse) + ThrowWriterException(CacheError,"UnableToPersistPixelCache"); + } if (GetNextImageInList(image) == (Image *) NULL) break; image=SyncNextImageInList(image);