diff --git a/magick/cache.c b/magick/cache.c
index 5124510..706006d 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -652,7 +652,8 @@
status;
LockSemaphoreInfo(cache_info->disk_semaphore);
- status=close(cache_info->file);
+ if (cache_info->file != -1)
+ status=close(cache_info->file);
cache_info->file=(-1);
RelinquishMagickResource(FileResource,1);
UnlockSemaphoreInfo(cache_info->disk_semaphore);
@@ -681,24 +682,18 @@
while (p != (CacheInfo *) NULL)
{
if ((p->type == DiskCache) && (p->file != -1))
- {
- if (IsMagickThreadEqual(p->id) != MagickFalse)
- break;
- }
+ break;
p=(CacheInfo *) GetNextKeyInSplayTree(cache_resources);
}
for (q=p; p != (CacheInfo *) NULL; )
{
if ((p->type == DiskCache) && (p->file != -1) &&
(p->timestamp < q->timestamp))
- {
- if (IsMagickThreadEqual(p->id) != MagickFalse)
- q=p;
- }
+ q=p;
p=(CacheInfo *) GetNextKeyInSplayTree(cache_resources);
}
if (q != (CacheInfo *) NULL)
- (void) ClosePixelCacheOnDisk(q); /* relinquish least recently used cache */
+ (void) close(q->file); /* relinquish least recently used cache */
UnlockSemaphoreInfo(cache_semaphore);
}