From: cristy Date: Wed, 28 Dec 2011 21:47:20 +0000 (+0000) Subject: (no commit message) X-Git-Tag: 7.0.1-0~6496 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3dfccb24f0f9c32594d58a06a6ea9fc28fe04867;p=imagemagick --- diff --git a/MagickCore/cache-private.h b/MagickCore/cache-private.h index b09145b5f..118a5a5a2 100644 --- a/MagickCore/cache-private.h +++ b/MagickCore/cache-private.h @@ -129,6 +129,9 @@ typedef struct _CacheInfo metacontent_extent, number_channels; + PixelChannelMap + channel_map[MaxPixelChannels]; + CacheType type; diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 026bdaf68..2034e3dee 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -1191,13 +1191,22 @@ static MagickBooleanType UnoptimizedPixelCacheClone(CacheInfo *clone_info, static MagickBooleanType ClonePixelCachePixels(CacheInfo *clone_info, CacheInfo *cache_info,ExceptionInfo *exception) { + PixelChannelMap + *p, + *q; + if (cache_info->type == PingCache) return(MagickTrue); + p=cache_info->channel_map; + q=clone_info->channel_map; if ((cache_info->columns == clone_info->columns) && (cache_info->rows == clone_info->rows) && (cache_info->number_channels == clone_info->number_channels) && + (memcmp(p,q,cache_info->number_channels*sizeof(*p)) == 0) && (cache_info->metacontent_extent == clone_info->metacontent_extent)) return(OptimizedPixelCacheClone(clone_info,cache_info,exception)); + if (memcmp(p,q,cache_info->number_channels*sizeof(*p)) != 0) + ; return(UnoptimizedPixelCacheClone(clone_info,cache_info,exception)); } @@ -4005,6 +4014,8 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, cache_info->columns=image->columns; InitializePixelChannelMap(image); cache_info->number_channels=GetPixelChannels(image); + (void) memcpy(cache_info->channel_map,image->channel_map, + cache_info->number_channels*sizeof(*image->channel_map)); cache_info->metacontent_extent=image->metacontent_extent; cache_info->mode=mode; if (image->ping != MagickFalse) diff --git a/coders/jp2.c b/coders/jp2.c index de03feb70..fcae3b620 100644 --- a/coders/jp2.c +++ b/coders/jp2.c @@ -1010,6 +1010,8 @@ static MagickBooleanType WriteJP2Image(const ImageInfo *image_info,Image *image, } status=jas_image_encode(jp2_image,jp2_stream,format,options) != 0 ? MagickTrue : MagickFalse; + if (options != (char *) NULL) + options=DestroyString(options); (void) jas_stream_close(jp2_stream); for (i=0; i < (ssize_t) number_components; i++) jas_matrix_destroy(pixels[i]);