From: Cristy Date: Wed, 26 Jul 2017 12:24:55 +0000 (-0400) Subject: https://github.com/ImageMagick/ImageMagick/issues/563 X-Git-Tag: 7.0.6-4~10 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=68ce166a7a7ee8576bb261c0ca291abe2f3d97bb;p=imagemagick https://github.com/ImageMagick/ImageMagick/issues/563 --- 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); }