]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Mon, 24 Apr 2017 15:50:43 +0000 (11:50 -0400)
committerCristy <urban-warrior@imagemagick.org>
Mon, 24 Apr 2017 15:50:43 +0000 (11:50 -0400)
MagickCore/cache.c
coders/mpc.c

index 3824930ee93a0d4fb0bf00c77b6b2a4584f22ce1..21a27c5e16503a15f0c70522116a170182ba3213 100644 (file)
@@ -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);
 }
 \f
index f8efbb2d1bc586deda6fc7b6b7edda9944eb3913..88e30eb711a90d20a83d15a6795ff5e77de75970 100644 (file)
@@ -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);