From 32cacffc3b812637b7a30ea1c1a23315f08ce630 Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 31 Dec 2011 03:36:27 +0000 Subject: [PATCH] --- MagickCore/cache.c | 25 +++++++++++++++++-------- coders/emf.c | 1 + 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/MagickCore/cache.c b/MagickCore/cache.c index e932e8263..443cddfc7 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -971,14 +971,24 @@ static MagickBooleanType UnoptimizedPixelCacheClone(CacheInfo *clone_info, } cache_offset=cache_info->offset; } - if (clone_info->type == DiskCache) + if ((cache_info->type != MemoryCache) && (clone_info->type != MemoryCache) && + (strcmp(cache_info->cache_filename,clone_info->cache_filename) == 0)) { - if ((cache_info->type == DiskCache) && - (strcmp(cache_info->cache_filename,clone_info->cache_filename) == 0)) + /* + Inplace cloning not reliable. + */ + (void) ClosePixelCacheOnDisk(clone_info); + if (cache_info->type == MapCache) { - (void) ClosePixelCacheOnDisk(clone_info); - *clone_info->cache_filename='\0'; + clone_info->pixels=(Quantum *) UnmapBlob(clone_info->pixels,(size_t) + clone_info->length); + RelinquishMagickResource(MapResource,clone_info->length); } + *clone_info->cache_filename='\0'; + clone_info->type=DiskCache; + } + if (clone_info->type == DiskCache) + { if (OpenPixelCacheOnDisk(clone_info,WriteMode) == MagickFalse) { if (cache_info->type == DiskCache) @@ -4086,7 +4096,7 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, if ((cache_info->columns == source_info.columns) && (cache_info->rows == source_info.rows) && (cache_info->number_channels == source_info.number_channels) && - (memcmp(p,q,image->number_channels*sizeof(*p)) == 0) && + (memcmp(p,q,cache_info->number_channels*sizeof(*p)) == 0) && (cache_info->metacontent_extent == source_info.metacontent_extent)) return(MagickTrue); return(ClonePixelCachePixels(cache_info,&source_info,exception)); @@ -4111,8 +4121,7 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode, status=MagickTrue; if (image->debug != MagickFalse) { - (void) FormatMagickSize(cache_info->length,MagickTrue, - format); + (void) FormatMagickSize(cache_info->length,MagickTrue,format); (void) FormatLocaleString(message,MaxTextExtent, "open %s (%s memory, %.20gx%.20gx%.20g %s)", cache_info->filename,cache_info->mapped != MagickFalse ? diff --git a/coders/emf.c b/coders/emf.c index e176ea039..9b7e1303e 100644 --- a/coders/emf.c +++ b/coders/emf.c @@ -544,6 +544,7 @@ static Image *ReadEMFImage(const ImageInfo *image_info, image->rows=(size_t) floor(((image->rows*image->resolution.y)/ DefaultResolution)+0.5); } + (void) flags; geometry=DestroyString(geometry); } hDC=GetDC(NULL); -- 2.40.0