From 68ce166a7a7ee8576bb261c0ca291abe2f3d97bb Mon Sep 17 00:00:00 2001 From: Cristy Date: Wed, 26 Jul 2017 08:24:55 -0400 Subject: [PATCH] https://github.com/ImageMagick/ImageMagick/issues/563 --- MagickCore/cache.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/MagickCore/cache.c b/MagickCore/cache.c index d01ce0ef8..3892cd6f2 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -418,7 +418,23 @@ MagickPrivate Cache ClonePixelCache(const Cache cache) clone_info=(CacheInfo *) AcquirePixelCache(cache_info->number_threads); if (clone_info == (Cache) NULL) return((Cache) NULL); + clone_info->file=cache_info->file; + (void) CopyMagickString(clone_info->filename,cache_info->filename, + MagickPathExtent); + clone_info->storage_class=cache_info->storage_class; + clone_info->colorspace=cache_info->colorspace; + clone_info->alpha_trait=cache_info->alpha_trait; + clone_info->read_mask=cache_info->read_mask; + clone_info->write_mask=cache_info->write_mask; + clone_info->rows=cache_info->rows; + clone_info->columns=cache_info->columns; + clone_info->number_channels=cache_info->number_channels; + (void) memcpy(clone_info->channel_map,cache_info->channel_map, + MaxPixelChannels*sizeof(*cache_info->channel_map)); + clone_info->metacontent_extent=cache_info->metacontent_extent; + clone_info->mode=cache_info->mode; clone_info->virtual_pixel_method=cache_info->virtual_pixel_method; + clone_info->length=cache_info->length; return((Cache ) clone_info); } @@ -3821,9 +3837,6 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, *magick_restrict cache_info, *magick_restrict clone_info; - Image - *clone_image; - MagickBooleanType status; @@ -3863,17 +3876,14 @@ MagickExport MagickBooleanType PersistPixelCache(Image *image, /* Clone persistent pixel cache. */ - clone_image=CloneImage(image,image->columns,image->rows,MagickTrue,exception); - if (clone_image == (Image *) NULL) - return(MagickFalse); - clone_info=(CacheInfo *) clone_image->cache; + clone_info=ClonePixelCache(cache_info); (void) CopyMagickString(clone_info->cache_filename,filename,MagickPathExtent); clone_info->mode=PersistMode; clone_info->type=DiskCache; clone_info->offset=(*offset); status=ClonePixelCacheRepository(clone_info,cache_info,exception); *offset+=cache_info->length+page_size-(cache_info->length % page_size); - clone_image=DestroyImage(clone_image); + clone_info=DestroyPixelCache(clone_info); return(status); } -- 2.50.1