]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Mon, 31 Mar 2014 11:54:56 +0000 (11:54 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Mon, 31 Mar 2014 11:54:56 +0000 (11:54 +0000)
MagickCore/cache.c

index 3aae81762dac39656ec87f33d05a3b5bd328a89a..4e0a0c6a65c3ddfba9f9299d9f0490b1e65b0a64 100644 (file)
@@ -3215,12 +3215,8 @@ static MagickBooleanType OpenPixelCacheOnDisk(CacheInfo *cache_info,
   /*
     Open pixel cache on disk.
   */
-  LockSemaphoreInfo(cache_info->file_semaphore);
   if (cache_info->file != -1)
-    {
-      UnlockSemaphoreInfo(cache_info->file_semaphore);
-      return(MagickTrue);  /* cache already open */
-    }
+    return(MagickTrue);  /* cache already open */
   if (*cache_info->cache_filename == '\0')
     file=AcquireUniqueFileResource(cache_info->cache_filename);
   else
@@ -3250,14 +3246,10 @@ static MagickBooleanType OpenPixelCacheOnDisk(CacheInfo *cache_info,
       }
     }
   if (file == -1)
-    {
-      UnlockSemaphoreInfo(cache_info->file_semaphore);
-      return(MagickFalse);
-    }
+    return(MagickFalse);
   (void) AcquireMagickResource(FileResource,1);
   cache_info->file=file;
   cache_info->mode=mode;
-  UnlockSemaphoreInfo(cache_info->file_semaphore);
   return(MagickTrue);
 }
 
@@ -3272,12 +3264,8 @@ static inline MagickOffsetType WritePixelCacheRegion(
     count;
 
 #if !defined(MAGICKCORE_HAVE_PWRITE)
-  LockSemaphoreInfo(cache_info->file_semaphore);
   if (lseek(cache_info->file,offset,SEEK_SET) < 0)
-    {
-      UnlockSemaphoreInfo(cache_info->file_semaphore);
-      return((MagickOffsetType) -1);
-    }
+    return((MagickOffsetType) -1);
 #endif
   count=0;
   for (i=0; i < (MagickOffsetType) length; i+=count)
@@ -3296,9 +3284,6 @@ static inline MagickOffsetType WritePixelCacheRegion(
           break;
       }
   }
-#if !defined(MAGICKCORE_HAVE_PREAD)
-  UnlockSemaphoreInfo(cache_info->file_semaphore);
-#endif
   return(i);
 }
 
@@ -4042,12 +4027,8 @@ static inline MagickOffsetType ReadPixelCacheRegion(
     count;
 
 #if !defined(MAGICKCORE_HAVE_PREAD)
-  LockSemaphoreInfo(cache_info->file_semaphore);
   if (lseek(cache_info->file,offset,SEEK_SET) < 0)
-    {
-      UnlockSemaphoreInfo(cache_info->file_semaphore);
-      return((MagickOffsetType) -1);
-    }
+    return((MagickOffsetType) -1);
 #endif
   count=0;
   for (i=0; i < (MagickOffsetType) length; i+=count)
@@ -4066,9 +4047,6 @@ static inline MagickOffsetType ReadPixelCacheRegion(
           break;
       }
   }
-#if !defined(MAGICKCORE_HAVE_PREAD)
-  UnlockSemaphoreInfo(cache_info->file_semaphore);
-#endif
   return(i);
 }
 
@@ -4137,10 +4115,12 @@ static MagickBooleanType ReadPixelCacheMetacontent(
       /*
         Read meta content from disk.
       */
+      LockSemaphoreInfo(cache_info->file_semaphore);
       if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
         {
           ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
             cache_info->cache_filename);
+          UnlockSemaphoreInfo(cache_info->file_semaphore);
           return(MagickFalse);
         }
       if ((cache_info->columns == nexus_info->region.width) &&
@@ -4162,6 +4142,7 @@ static MagickBooleanType ReadPixelCacheMetacontent(
       }
       if (IsFileDescriptorLimitExceeded() != MagickFalse)
         (void) ClosePixelCacheOnDisk(cache_info);
+      UnlockSemaphoreInfo(cache_info->file_semaphore);
       break;
     }
     case DistributedCache:
@@ -4301,10 +4282,12 @@ static MagickBooleanType ReadPixelCachePixels(CacheInfo *restrict cache_info,
       /*
         Read pixels from disk.
       */
+      LockSemaphoreInfo(cache_info->file_semaphore);
       if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
         {
           ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
             cache_info->cache_filename);
+          UnlockSemaphoreInfo(cache_info->file_semaphore);
           return(MagickFalse);
         }
       if ((cache_info->columns == nexus_info->region.width) &&
@@ -4324,6 +4307,7 @@ static MagickBooleanType ReadPixelCachePixels(CacheInfo *restrict cache_info,
       }
       if (IsFileDescriptorLimitExceeded() != MagickFalse)
         (void) ClosePixelCacheOnDisk(cache_info);
+      UnlockSemaphoreInfo(cache_info->file_semaphore);
       break;
     }
     case DistributedCache:
@@ -5109,10 +5093,12 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info,
       /*
         Write associated pixels to disk.
       */
+      LockSemaphoreInfo(cache_info->file_semaphore);
       if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
         {
           ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
             cache_info->cache_filename);
+          UnlockSemaphoreInfo(cache_info->file_semaphore);
           return(MagickFalse);
         }
       if ((cache_info->columns == nexus_info->region.width) &&
@@ -5134,6 +5120,7 @@ static MagickBooleanType WritePixelCacheMetacontent(CacheInfo *cache_info,
       }
       if (IsFileDescriptorLimitExceeded() != MagickFalse)
         (void) ClosePixelCacheOnDisk(cache_info);
+      UnlockSemaphoreInfo(cache_info->file_semaphore);
       break;
     }
     case DistributedCache:
@@ -5273,10 +5260,12 @@ static MagickBooleanType WritePixelCachePixels(CacheInfo *restrict cache_info,
       /*
         Write pixels to disk.
       */
+      LockSemaphoreInfo(cache_info->file_semaphore);
       if (OpenPixelCacheOnDisk(cache_info,IOMode) == MagickFalse)
         {
           ThrowFileException(exception,FileOpenError,"UnableToOpenFile",
             cache_info->cache_filename);
+          UnlockSemaphoreInfo(cache_info->file_semaphore);
           return(MagickFalse);
         }
       if ((cache_info->columns == nexus_info->region.width) &&
@@ -5297,6 +5286,7 @@ static MagickBooleanType WritePixelCachePixels(CacheInfo *restrict cache_info,
       }
       if (IsFileDescriptorLimitExceeded() != MagickFalse)
         (void) ClosePixelCacheOnDisk(cache_info);
+      UnlockSemaphoreInfo(cache_info->file_semaphore);
       break;
     }
     case DistributedCache: