diff --git a/MagickCore/cache.c b/MagickCore/cache.c index 3791424d692..90f7ad2479f 100644 --- a/MagickCore/cache.c +++ b/MagickCore/cache.c @@ -1632,7 +1632,9 @@ static Cache GetImagePixelCache(Image *image,const MagickBooleanType clone, clone_image.cache=ClonePixelCache(cache_info); clone_info=(CacheInfo *) clone_image.cache; status=OpenPixelCache(&clone_image,IOMode,exception); - if (status != MagickFalse) + if (status == MagickFalse) + clone_info=(CacheInfo *) DestroyPixelCache(clone_info); + else { if (clone != MagickFalse) status=ClonePixelCacheRepository(clone_info,cache_info, @@ -1640,7 +1642,7 @@ static Cache GetImagePixelCache(Image *image,const MagickBooleanType clone, if (status != MagickFalse) { destroy=MagickTrue; - image->cache=clone_image.cache; + image->cache=clone_info; } } RelinquishSemaphoreInfo(&clone_image.semaphore); diff --git a/coders/png.c b/coders/png.c index de31f46e88e..caef8e017a0 100644 --- a/coders/png.c +++ b/coders/png.c @@ -11302,7 +11302,6 @@ static MagickBooleanType WriteOnePNGImage(MngInfo *mng_info, if (pixel_info == (MemoryInfo *) NULL) png_error(ping,"Allocation of memory for pixels failed"); ping_pixels=(unsigned char *) GetVirtualMemoryBlob(pixel_info); - /* Initialize image scanlines. */