From ceb55ee6ffaf5e26d0d9ace5c04467a8eed7a64b Mon Sep 17 00:00:00 2001 From: cristy Date: Sat, 6 Nov 2010 16:05:49 +0000 Subject: [PATCH] --- magick/cache.c | 56 ++++++++++++++++++++++++-------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/magick/cache.c b/magick/cache.c index ff834b928..eb5d373cf 100644 --- a/magick/cache.c +++ b/magick/cache.c @@ -2099,44 +2099,42 @@ static Cache GetImagePixelCache(Image *image,const MagickBooleanType clone, assert(image->cache != (Cache) NULL); cache_info=(CacheInfo *) image->cache; destroy=MagickFalse; - if (cache_info->type != PingCache) + if ((cache_info->reference_count > 1) || (cache_info->mode == ReadMode)) { - if ((cache_info->reference_count > 1) || (cache_info->mode == ReadMode)) + LockSemaphoreInfo(cache_info->semaphore); + if ((cache_info->reference_count > 1) || + (cache_info->mode == ReadMode)) { - LockSemaphoreInfo(cache_info->semaphore); - if ((cache_info->reference_count > 1) || - (cache_info->mode == ReadMode)) - { - Image - clone_image; + Image + clone_image; - CacheInfo - *clone_info; + CacheInfo + *clone_info; - /* - Clone pixel cache. - */ - clone_image=(*image); - clone_image.semaphore=AllocateSemaphoreInfo(); - clone_image.reference_count=1; - clone_image.cache=ClonePixelCache(cache_info); - clone_info=(CacheInfo *) clone_image.cache; - status=OpenPixelCache(&clone_image,IOMode,exception); + /* + Clone pixel cache. + */ + clone_image=(*image); + clone_image.semaphore=AllocateSemaphoreInfo(); + clone_image.reference_count=1; + clone_image.cache=ClonePixelCache(cache_info); + clone_info=(CacheInfo *) clone_image.cache; + status=OpenPixelCache(&clone_image,IOMode,exception); + if (status != MagickFalse) + { + if ((clone != MagickFalse) && + (cache_info->type != PingCache)) + status=ClonePixelCachePixels(clone_info,cache_info, + exception); if (status != MagickFalse) { - if (clone != MagickFalse) - status=ClonePixelCachePixels(clone_info,cache_info, - exception); - if (status != MagickFalse) - { - destroy=MagickTrue; - image->cache=clone_image.cache; - } + destroy=MagickTrue; + image->cache=clone_image.cache; } - DestroySemaphoreInfo(&clone_image.semaphore); } - UnlockSemaphoreInfo(cache_info->semaphore); + DestroySemaphoreInfo(&clone_image.semaphore); } + UnlockSemaphoreInfo(cache_info->semaphore); } if (destroy != MagickFalse) cache_info=(CacheInfo *) DestroyPixelCache(cache_info); -- 2.40.0