]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 2 Jul 2011 14:07:40 +0000 (14:07 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 2 Jul 2011 14:07:40 +0000 (14:07 +0000)
MagickCore/cache.c

index bd06694ccdc99afb5c6c41ca09a4fee6db56f003..f033460841a9332197554d59cb8a5690f4444dac 100644 (file)
@@ -791,14 +791,14 @@ static MagickBooleanType DiskToDiskPixelCacheClone(CacheInfo *clone_info,
         cache_info->filename);
       return(MagickFalse);
     }
-  if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
+  if (OpenPixelCacheOnDisk(cache_info,ReadMode) == MagickFalse)
     {
       blob=(unsigned char *) RelinquishMagickMemory(blob);
       ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
         cache_info->cache_filename);
       return(MagickFalse);
     }
-  if (OpenPixelCacheOnDisk(clone_info,IOMode) == MagickFalse)
+  if (OpenPixelCacheOnDisk(clone_info,WriteMode) == MagickFalse)
     {
       (void) ClosePixelCacheOnDisk(cache_info);
       blob=(unsigned char *) RelinquishMagickMemory(blob);
@@ -972,7 +972,13 @@ static MagickBooleanType UnoptimizedPixelCacheClone(CacheInfo *clone_info,
     }
   if (clone_info->type == DiskCache)
     {
-      if (OpenPixelCacheOnDisk(clone_info,IOMode) == MagickFalse)
+      if ((cache_info->type == DiskCache) &&
+          (strcmp(cache_info->cache_filename,clone_info->cache_filename) == 0))
+        {
+          (void) ClosePixelCacheOnDisk(clone_info);
+          *clone_info->cache_filename='\0';
+        }
+      if (OpenPixelCacheOnDisk(clone_info,WriteMode) == MagickFalse)
         {
           if (cache_info->type == DiskCache)
             (void) ClosePixelCacheOnDisk(cache_info);
@@ -4108,12 +4114,6 @@ static MagickBooleanType OpenPixelCache(Image *image,const MapMode mode,
         "CacheResourcesExhausted","`%s'",image->filename);
       return(MagickFalse);
     }
-  if (cache_info->type == DiskCache)
-    {
-      (void) ClosePixelCacheOnDisk(cache_info);
-      *cache_info->cache_filename='\0';
-      status=DiskToDiskPixelCacheClone(cache_info,&source_info,exception);
-    }
   if (OpenPixelCacheOnDisk(cache_info,mode) == MagickFalse)
     {
       RelinquishMagickResource(DiskResource,cache_info->length);