From 0722fe0e7de465d77e5753e07f81a444acc5aa34 Mon Sep 17 00:00:00 2001 From: Cristy Date: Mon, 24 Apr 2017 11:50:43 -0400 Subject: [PATCH] ... --- MagickCore/cache.c | 9 +++------ coders/mpc.c | 14 ++++++++++---- 2 files changed, 13 insertions(+), 10 deletions(-) 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); -- 2.50.1