diff --git a/magick/cache.c b/magick/cache.c
index ef236f4..8721738 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -205,7 +205,7 @@
{
if (cache_semaphore == (SemaphoreInfo *) NULL)
AcquireSemaphoreInfo(&cache_semaphore);
- (void) LockSemaphoreInfo(cache_semaphore);
+ LockSemaphoreInfo(cache_semaphore);
if ((cache_resources == (SplayTreeInfo *) NULL) &&
(instantiate_cache == MagickFalse))
{
@@ -213,7 +213,7 @@
NULL,(void *(*)(void *)) NULL,(void *(*)(void *)) NULL);
instantiate_cache=MagickTrue;
}
- (void) UnlockSemaphoreInfo(cache_semaphore);
+ UnlockSemaphoreInfo(cache_semaphore);
}
(void) AddValueToSplayTree(cache_resources,cache_info,cache_info);
return((Cache ) cache_info);
@@ -311,11 +311,11 @@
{
if (cache_semaphore == (SemaphoreInfo *) NULL)
AcquireSemaphoreInfo(&cache_semaphore);
- (void) LockSemaphoreInfo(cache_semaphore);
+ LockSemaphoreInfo(cache_semaphore);
if (cache_resources != (SplayTreeInfo *) NULL)
cache_resources=DestroySplayTree(cache_resources);
instantiate_cache=MagickFalse;
- (void) UnlockSemaphoreInfo(cache_semaphore);
+ UnlockSemaphoreInfo(cache_semaphore);
DestroySemaphoreInfo(&cache_semaphore);
}
@@ -600,11 +600,11 @@
int
status;
- (void) LockSemaphoreInfo(cache_info->disk_semaphore);
+ LockSemaphoreInfo(cache_info->disk_semaphore);
status=close(cache_info->file);
cache_info->file=(-1);
RelinquishMagickResource(FileResource,1);
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(status == -1 ? MagickFalse : MagickTrue);
}
@@ -619,10 +619,10 @@
*/
if (GetMagickResource(FileResource) < GetMagickResourceLimit(FileResource))
return;
- (void) LockSemaphoreInfo(cache_semaphore);
+ LockSemaphoreInfo(cache_semaphore);
if (cache_resources == (SplayTreeInfo *) NULL)
{
- (void) UnlockSemaphoreInfo(cache_semaphore);
+ UnlockSemaphoreInfo(cache_semaphore);
return;
}
ResetSplayTreeIterator(cache_resources);
@@ -648,7 +648,7 @@
}
if (q != (CacheInfo *) NULL)
(void) ClosePixelCacheOnDisk(q); /* relinquish least recently used cache */
- (void) UnlockSemaphoreInfo(cache_semaphore);
+ UnlockSemaphoreInfo(cache_semaphore);
}
static inline MagickSizeType MagickMax(const MagickSizeType x,
@@ -676,10 +676,10 @@
/*
Open pixel cache on disk.
*/
- (void) LockSemaphoreInfo(cache_info->disk_semaphore);
+ LockSemaphoreInfo(cache_info->disk_semaphore);
if (cache_info->file != -1)
{
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(MagickTrue); /* cache already open */
}
LimitPixelCacheDescriptors();
@@ -713,13 +713,13 @@
}
if (file == -1)
{
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(MagickFalse);
}
(void) AcquireMagickResource(FileResource,1);
cache_info->file=file;
cache_info->timestamp=time(0);
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return(MagickTrue);
}
@@ -734,11 +734,11 @@
count;
#if !defined(MAGICKCORE_HAVE_PREAD)
- (void) LockSemaphoreInfo(cache_info->disk_semaphore);
+ LockSemaphoreInfo(cache_info->disk_semaphore);
cache_info->timestamp=time(0);
if (MagickSeek(cache_info->file,offset,SEEK_SET) < 0)
{
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return((MagickOffsetType) -1);
}
#endif
@@ -762,7 +762,7 @@
}
}
#if !defined(MAGICKCORE_HAVE_PREAD)
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
#endif
return(i);
}
@@ -778,11 +778,11 @@
count;
#if !defined(MAGICKCORE_HAVE_PWRITE)
- (void) LockSemaphoreInfo(cache_info->disk_semaphore);
+ LockSemaphoreInfo(cache_info->disk_semaphore);
cache_info->timestamp=time(0);
if (MagickSeek(cache_info->file,offset,SEEK_SET) < 0)
{
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
return((MagickOffsetType) -1);
}
#endif
@@ -806,7 +806,7 @@
}
}
#if !defined(MAGICKCORE_HAVE_PWRITE)
- (void) UnlockSemaphoreInfo(cache_info->disk_semaphore);
+ UnlockSemaphoreInfo(cache_info->disk_semaphore);
#endif
return(i);
}
@@ -1530,14 +1530,14 @@
if (cache_info->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
cache_info->filename);
- (void) LockSemaphoreInfo(cache_info->semaphore);
+ LockSemaphoreInfo(cache_info->semaphore);
cache_info->reference_count--;
if (cache_info->reference_count != 0)
{
- (void) UnlockSemaphoreInfo(cache_info->semaphore);
+ UnlockSemaphoreInfo(cache_info->semaphore);
return((Cache) NULL);
}
- (void) UnlockSemaphoreInfo(cache_info->semaphore);
+ UnlockSemaphoreInfo(cache_info->semaphore);
if (cache_resources != (SplayTreeInfo *) NULL)
(void) DeleteNodeByValueFromSplayTree(cache_resources,cache_info);
if (cache_info->debug != MagickFalse)
@@ -2117,7 +2117,7 @@
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
status=MagickTrue;
- (void) LockSemaphoreInfo(image->semaphore);
+ LockSemaphoreInfo(image->semaphore);
time_limit=GetMagickResourceLimit(TimeResource);
if (cache_timer == 0)
cache_timer=time((time_t *) NULL);
@@ -2127,7 +2127,7 @@
assert(image->cache != (Cache) NULL);
cache_info=(CacheInfo *) image->cache;
destroy=MagickFalse;
- (void) LockSemaphoreInfo(cache_info->semaphore);
+ LockSemaphoreInfo(cache_info->semaphore);
if ((cache_info->reference_count > 1) || (cache_info->mode == ReadMode))
{
Image
@@ -2158,7 +2158,7 @@
}
}
}
- (void) UnlockSemaphoreInfo(cache_info->semaphore);
+ UnlockSemaphoreInfo(cache_info->semaphore);
if (destroy != MagickFalse)
cache_info=(CacheInfo *) DestroyPixelCache(cache_info);
if (status != MagickFalse)
@@ -2173,7 +2173,7 @@
if (ValidatePixelCacheMorphology(image) == MagickFalse)
status=OpenPixelCache(image,IOMode,exception);
}
- (void) UnlockSemaphoreInfo(image->semaphore);
+ UnlockSemaphoreInfo(image->semaphore);
if (status == MagickFalse)
return((Cache) NULL);
return(image->cache);
@@ -2736,7 +2736,8 @@
%
% The format of the GetPixelCachePixels() method is:
%
-% void *GetPixelCacheVirtualPixels(Image *image,MagickSizeType *length)
+% void *GetPixelCachePixels(Image *image,MagickSizeType *length,
+% ExceptionInfo *exception)
%
% A description of each parameter follows:
%
@@ -2744,8 +2745,11 @@
%
% o length: the pixel cache length.
%
+% o exception: return any errors or warnings in this structure.
+%
*/
-MagickExport void *GetPixelCachePixels(Image *image,MagickSizeType *length)
+MagickExport void *GetPixelCachePixels(Image *image,MagickSizeType *length,
+ ExceptionInfo *exception)
{
CacheInfo
*cache_info;
@@ -2755,7 +2759,7 @@
if (image->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
assert(image->cache != (Cache) NULL);
- cache_info=(CacheInfo *) image->cache;
+ cache_info=GetImagePixelCache(image,MagickTrue,exception);
assert(cache_info->signature == MagickSignature);
*length=0;
if ((cache_info->storage_class != MemoryCache) &&
@@ -4231,7 +4235,7 @@
if ((cache_info->mode != ReadMode) && (cache_info->type != MemoryCache) &&
(cache_info->reference_count == 1))
{
- (void) LockSemaphoreInfo(cache_info->semaphore);
+ LockSemaphoreInfo(cache_info->semaphore);
if ((cache_info->mode != ReadMode) && (cache_info->type != MemoryCache) &&
(cache_info->reference_count == 1))
{
@@ -4248,7 +4252,7 @@
MaxTextExtent);
*offset+=cache_info->length+page_size-(cache_info->length %
page_size);
- (void) UnlockSemaphoreInfo(cache_info->semaphore);
+ UnlockSemaphoreInfo(cache_info->semaphore);
cache_info=(CacheInfo *) ReferencePixelCache(cache_info);
if (image->debug != MagickFalse)
(void) LogMagickEvent(CacheEvent,GetMagickModule(),
@@ -4256,7 +4260,7 @@
return(MagickTrue);
}
}
- (void) UnlockSemaphoreInfo(cache_info->semaphore);
+ UnlockSemaphoreInfo(cache_info->semaphore);
}
/*
Clone persistent pixel cache.
@@ -4788,9 +4792,9 @@
if (cache_info->debug != MagickFalse)
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",
cache_info->filename);
- (void) LockSemaphoreInfo(cache_info->semaphore);
+ LockSemaphoreInfo(cache_info->semaphore);
cache_info->reference_count++;
- (void) UnlockSemaphoreInfo(cache_info->semaphore);
+ UnlockSemaphoreInfo(cache_info->semaphore);
return(cache_info);
}