diff --git a/magick/cache.c b/magick/cache.c
index 64e360b..0af1ded 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -201,8 +201,8 @@
   if (cache_info->nexus_info == (NexusInfo **) NULL)
     ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
   GetPixelCacheMethods(&cache_info->methods);
-  cache_info->reference_count=1;
   cache_info->semaphore=AllocateSemaphoreInfo();
+  cache_info->reference_count=1;
   cache_info->disk_semaphore=AllocateSemaphoreInfo();
   cache_info->debug=IsEventLogging();
   cache_info->signature=MagickSignature;
@@ -2215,6 +2215,8 @@
             Clone pixel cache.
           */
           clone_image=(*image);
+          clone_image.semaphore=AllocateSemaphoreInfo();
+          clone_image.reference_count=1;
           clone_image.cache=ClonePixelCache(cache_info);
           clone_info=(CacheInfo *) clone_image.cache;
           status=ClonePixelCacheNexus(cache_info,clone_info,exception);
@@ -2233,6 +2235,7 @@
                     }
                 }
             }
+          DestroySemaphoreInfo(&clone_image.semaphore);
         }
       UnlockSemaphoreInfo(cache_info->semaphore);
     }