diff --git a/MagickCore/annotate.c b/MagickCore/annotate.c
index d945cca..0a985f2 100644
--- a/MagickCore/annotate.c
+++ b/MagickCore/annotate.c
@@ -170,7 +170,7 @@
 MagickPrivate void AnnotateComponentTerminus(void)
 {
   if (annotate_semaphore == (SemaphoreInfo *) NULL)
-    annotate_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&annotate_semaphore);
   RelinquishSemaphoreInfo(&annotate_semaphore);
 }
 
@@ -1904,7 +1904,7 @@
     status;
 
   if (annotate_semaphore == (SemaphoreInfo *) NULL)
-    annotate_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&annotate_semaphore);
   LockSemaphoreInfo(annotate_semaphore);
   status=XRenderImage(image,draw_info,offset,metrics,exception);
   UnlockSemaphoreInfo(annotate_semaphore);
diff --git a/MagickCore/cache.c b/MagickCore/cache.c
index 290f054..4e0a0c6 100644
--- a/MagickCore/cache.c
+++ b/MagickCore/cache.c
@@ -349,7 +349,7 @@
 MagickPrivate void CacheComponentTerminus(void)
 {
   if (cache_semaphore == (SemaphoreInfo *) NULL)
-    cache_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&cache_semaphore);
   LockSemaphoreInfo(cache_semaphore);
   instantiate_cache=MagickFalse;
   UnlockSemaphoreInfo(cache_semaphore);
diff --git a/MagickCore/coder.c b/MagickCore/coder.c
index 2095db0..1ca26c3 100644
--- a/MagickCore/coder.c
+++ b/MagickCore/coder.c
@@ -290,7 +290,7 @@
 MagickPrivate void CoderComponentTerminus(void)
 {
   if (coder_semaphore == (SemaphoreInfo *) NULL)
-    coder_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&coder_semaphore);
   LockSemaphoreInfo(coder_semaphore);
   if (coder_list != (SplayTreeInfo *) NULL)
     coder_list=DestroySplayTree(coder_list);
@@ -542,7 +542,7 @@
       (instantiate_coder == MagickFalse))
     {
       if (coder_semaphore == (SemaphoreInfo *) NULL)
-        coder_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&coder_semaphore);
       LockSemaphoreInfo(coder_semaphore);
       if ((coder_list == (SplayTreeInfo *) NULL) &&
           (instantiate_coder == MagickFalse))
diff --git a/MagickCore/color.c b/MagickCore/color.c
index 08fbed7..359b629 100644
--- a/MagickCore/color.c
+++ b/MagickCore/color.c
@@ -863,7 +863,7 @@
 MagickPrivate void ColorComponentTerminus(void)
 {
   if (color_semaphore == (SemaphoreInfo *) NULL)
-    color_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&color_semaphore);
   LockSemaphoreInfo(color_semaphore);
   if (color_list != (LinkedListInfo *) NULL)
     color_list=DestroyLinkedList(color_list,DestroyColorElement);
@@ -1519,7 +1519,7 @@
       IfMagickFalse(instantiate_color))
     {
       if (color_semaphore == (SemaphoreInfo *) NULL)
-        color_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&color_semaphore);
       LockSemaphoreInfo(color_semaphore);
       if ((color_list == (LinkedListInfo *) NULL) &&
           IfMagickFalse(instantiate_color))
diff --git a/MagickCore/configure.c b/MagickCore/configure.c
index 028ea79..43ed316 100644
--- a/MagickCore/configure.c
+++ b/MagickCore/configure.c
@@ -187,7 +187,7 @@
 MagickPrivate void ConfigureComponentTerminus(void)
 {
   if (configure_semaphore == (SemaphoreInfo *) NULL)
-    configure_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&configure_semaphore);
   LockSemaphoreInfo(configure_semaphore);
   if (configure_list != (LinkedListInfo *) NULL)
     configure_list=DestroyLinkedList(configure_list,DestroyConfigureElement);
@@ -906,7 +906,7 @@
       (instantiate_configure == MagickFalse))
     {
       if (configure_semaphore == (SemaphoreInfo *) NULL)
-        configure_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&configure_semaphore);
       LockSemaphoreInfo(configure_semaphore);
       if ((configure_list == (LinkedListInfo *) NULL) &&
           (instantiate_configure == MagickFalse))
diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c
index 28a2315..ca46534 100644
--- a/MagickCore/constitute.c
+++ b/MagickCore/constitute.c
@@ -128,7 +128,7 @@
 MagickPrivate void ConstituteComponentTerminus(void)
 {
   if (constitute_semaphore == (SemaphoreInfo *) NULL)
-    constitute_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&constitute_semaphore);
   RelinquishSemaphoreInfo(&constitute_semaphore);
 }
 
@@ -528,7 +528,7 @@
     }
   image=NewImageList();
   if (constitute_semaphore == (SemaphoreInfo *) NULL)
-    constitute_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&constitute_semaphore);
   if ((magick_info == (const MagickInfo *) NULL) ||
       (GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL))
     {
@@ -1142,7 +1142,7 @@
         }
     }
   if (constitute_semaphore == (SemaphoreInfo *) NULL)
-    constitute_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&constitute_semaphore);
   if ((magick_info != (const MagickInfo *) NULL) &&
       (GetImageEncoder(magick_info) != (EncodeImageHandler *) NULL))
     {
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index a7d7a63..2ae07e8 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -207,7 +207,7 @@
 MagickPrivate void DelegateComponentTerminus(void)
 {
   if (delegate_semaphore == (SemaphoreInfo *) NULL)
-    delegate_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&delegate_semaphore);
   LockSemaphoreInfo(delegate_semaphore);
   if (delegate_list != (LinkedListInfo *) NULL)
     delegate_list=DestroyLinkedList(delegate_list,DestroyDelegate);
@@ -713,7 +713,7 @@
       IfMagickFalse(instantiate_delegate))
     {
       if (delegate_semaphore == (SemaphoreInfo *) NULL)
-        delegate_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&delegate_semaphore);
       LockSemaphoreInfo(delegate_semaphore);
       if ((delegate_list == (LinkedListInfo *) NULL) &&
           IfMagickFalse(instantiate_delegate))
diff --git a/MagickCore/exception.c b/MagickCore/exception.c
index f08afba..3929ba6 100644
--- a/MagickCore/exception.c
+++ b/MagickCore/exception.c
@@ -414,7 +414,7 @@
   assert(exception != (ExceptionInfo *) NULL);
   assert(exception->signature == MagickSignature);
   if (exception->semaphore == (SemaphoreInfo *) NULL)
-    exception->semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&exception->semaphore);
   LockSemaphoreInfo(exception->semaphore);
   exception->severity=UndefinedException;
   if (exception->exceptions != (void *) NULL)
diff --git a/MagickCore/locale.c b/MagickCore/locale.c
index 7033e1c..a5bf7d5 100644
--- a/MagickCore/locale.c
+++ b/MagickCore/locale.c
@@ -817,7 +817,7 @@
       (instantiate_locale == MagickFalse))
     {
       if (locale_semaphore == (SemaphoreInfo *) NULL)
-        locale_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&locale_semaphore);
       LockSemaphoreInfo(locale_semaphore);
       if ((locale_list == (SplayTreeInfo *) NULL) &&
           (instantiate_locale == MagickFalse))
@@ -1417,7 +1417,7 @@
 MagickPrivate void LocaleComponentTerminus(void)
 {
   if (locale_semaphore == (SemaphoreInfo *) NULL)
-    locale_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&locale_semaphore);
   LockSemaphoreInfo(locale_semaphore);
   if (locale_list != (SplayTreeInfo *) NULL)
     locale_list=DestroySplayTree(locale_list);
diff --git a/MagickCore/log.c b/MagickCore/log.c
index 60186eb..b000607 100644
--- a/MagickCore/log.c
+++ b/MagickCore/log.c
@@ -537,7 +537,7 @@
   if ((log_list == (LinkedListInfo *) NULL) && (instantiate_log == MagickFalse))
     {
       if (log_semaphore == (SemaphoreInfo *) NULL)
-        log_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&log_semaphore);
       LockSemaphoreInfo(log_semaphore);
       if ((log_list == (LinkedListInfo *) NULL) &&
           (instantiate_log == MagickFalse))
@@ -759,7 +759,7 @@
 MagickPrivate void LogComponentTerminus(void)
 {
   if (log_semaphore == (SemaphoreInfo *) NULL)
-    log_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&log_semaphore);
   LockSemaphoreInfo(log_semaphore);
   if (log_list != (LinkedListInfo *) NULL)
     log_list=DestroyLinkedList(log_list,DestroyLogElement);
diff --git a/MagickCore/magic.c b/MagickCore/magic.c
index 0ec0b37..f44684a 100644
--- a/MagickCore/magic.c
+++ b/MagickCore/magic.c
@@ -533,7 +533,7 @@
       (instantiate_magic == MagickFalse))
     {
       if (magic_semaphore == (SemaphoreInfo *) NULL)
-        magic_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&magic_semaphore);
       LockSemaphoreInfo(magic_semaphore);
       if ((magic_list == (LinkedListInfo *) NULL) &&
           (instantiate_magic == MagickFalse))
@@ -1071,7 +1071,7 @@
 MagickPrivate void MagicComponentTerminus(void)
 {
   if (magic_semaphore == (SemaphoreInfo *) NULL)
-    magic_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&magic_semaphore);
   LockSemaphoreInfo(magic_semaphore);
   if (magic_list != (LinkedListInfo *) NULL)
     magic_list=DestroyLinkedList(magic_list,DestroyMagicElement);
diff --git a/MagickCore/magick.c b/MagickCore/magick.c
index 5dba4c6..d2f0ef4 100644
--- a/MagickCore/magick.c
+++ b/MagickCore/magick.c
@@ -844,7 +844,7 @@
       (instantiate_magick == MagickFalse))
     {
       if (magick_semaphore == (SemaphoreInfo *) NULL)
-        magick_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&magick_semaphore);
       LockSemaphoreInfo(magick_semaphore);
       if ((magick_list == (SplayTreeInfo *) NULL) &&
           (instantiate_magick == MagickFalse))
@@ -1100,7 +1100,7 @@
 MagickPrivate void MagickComponentTerminus(void)
 {
   if (magick_semaphore == (SemaphoreInfo *) NULL)
-    magick_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&magick_semaphore);
   LockSemaphoreInfo(magick_semaphore);
   if (magick_list != (SplayTreeInfo *) NULL)
     magick_list=DestroySplayTree(magick_list);
diff --git a/MagickCore/memory.c b/MagickCore/memory.c
index 119f5f6..1edb4ad 100644
--- a/MagickCore/memory.c
+++ b/MagickCore/memory.c
@@ -463,7 +463,7 @@
   memory=memory_methods.acquire_memory_handler(size == 0 ? 1UL : size);
 #else
   if (memory_semaphore == (SemaphoreInfo *) NULL)
-    memory_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&memory_semaphore);
   if (free_segments == (DataSegmentInfo *) NULL)
     {
       LockSemaphoreInfo(memory_semaphore);
@@ -724,7 +724,7 @@
     i;
 
   if (memory_semaphore == (SemaphoreInfo *) NULL)
-    memory_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&memory_semaphore);
   LockSemaphoreInfo(memory_semaphore);
   UnlockSemaphoreInfo(memory_semaphore);
   for (i=0; i < (ssize_t) memory_pool.number_segments; i++)
diff --git a/MagickCore/mime.c b/MagickCore/mime.c
index fed83d9..f7dcb23 100644
--- a/MagickCore/mime.c
+++ b/MagickCore/mime.c
@@ -608,7 +608,7 @@
       (instantiate_mime == MagickFalse))
     {
       if (mime_semaphore == (SemaphoreInfo *) NULL)
-        mime_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&mime_semaphore);
       LockSemaphoreInfo(mime_semaphore);
       if ((mime_list == (LinkedListInfo *) NULL) &&
           (instantiate_mime == MagickFalse))
@@ -1102,7 +1102,7 @@
 MagickPrivate void MimeComponentTerminus(void)
 {
   if (mime_semaphore == (SemaphoreInfo *) NULL)
-    mime_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&mime_semaphore);
   LockSemaphoreInfo(mime_semaphore);
   if (mime_list != (LinkedListInfo *) NULL)
     mime_list=DestroyLinkedList(mime_list,DestroyMimeElement);
diff --git a/MagickCore/module.c b/MagickCore/module.c
index 9a18212..8d5c61f 100644
--- a/MagickCore/module.c
+++ b/MagickCore/module.c
@@ -869,7 +869,7 @@
       (instantiate_module == MagickFalse))
     {
       if (module_semaphore == (SemaphoreInfo *) NULL)
-        module_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&module_semaphore);
       LockSemaphoreInfo(module_semaphore);
       if ((module_list == (SplayTreeInfo *) NULL) &&
           (instantiate_module == MagickFalse))
@@ -1192,7 +1192,7 @@
 MagickPrivate void ModuleComponentTerminus(void)
 {
   if (module_semaphore == (SemaphoreInfo *) NULL)
-    module_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&module_semaphore);
   DestroyModuleList();
   RelinquishSemaphoreInfo(&module_semaphore);
 }
diff --git a/MagickCore/opencl.c b/MagickCore/opencl.c
index c9614d0..31a05c3 100644
--- a/MagickCore/opencl.c
+++ b/MagickCore/opencl.c
@@ -126,7 +126,7 @@
   if (clEnv != NULL)
   {
     memset(clEnv, 0, sizeof(struct _MagickCLEnv));
-    clEnv->lock=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&clEnv->lock);
   }
   return clEnv;
 }
@@ -203,7 +203,7 @@
   {
     if (defaultCLEnvLock == NULL)
     {
-      defaultCLEnvLock=AcquireSemaphoreInfo();
+      ActivateSemaphoreInfo(&defaultCLEnvLock);
     }
     LockSemaphoreInfo(defaultCLEnvLock);
     defaultCLEnv = AcquireMagickOpenCLEnv();
@@ -215,7 +215,7 @@
 static void LockDefaultOpenCLEnv() {
   if (defaultCLEnvLock == NULL)
   {
-    defaultCLEnvLock=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&defaultCLEnvLock);
   }
   LockSemaphoreInfo(defaultCLEnvLock);
 }
@@ -223,7 +223,7 @@
 static void UnlockDefaultOpenCLEnv() {
   if (defaultCLEnvLock == NULL)
   {
-    defaultCLEnvLock=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&defaultCLEnvLock);
   }
   else
     UnlockSemaphoreInfo(defaultCLEnvLock);
@@ -2543,7 +2543,7 @@
   if (openclCachedFilesDirectory == NULL) {
     if (openclCachedFilesDirectoryLock == NULL)
     {
-      openclCachedFilesDirectoryLock=AcquireSemaphoreInfo();
+      ActivateSemaphoreInfo(&openclCachedFilesDirectoryLock);
     }
     LockSemaphoreInfo(openclCachedFilesDirectoryLock);
     if (openclCachedFilesDirectory == NULL) {
diff --git a/MagickCore/policy.c b/MagickCore/policy.c
index e301977..19d09c4 100644
--- a/MagickCore/policy.c
+++ b/MagickCore/policy.c
@@ -429,7 +429,7 @@
       (instantiate_policy == MagickFalse))
     {
       if (policy_semaphore == (SemaphoreInfo *) NULL)
-        policy_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&policy_semaphore);
       LockSemaphoreInfo(policy_semaphore);
       if ((policy_list == (LinkedListInfo *) NULL) &&
           (instantiate_policy == MagickFalse))
@@ -1016,7 +1016,7 @@
 MagickPrivate void PolicyComponentTerminus(void)
 {
   if (policy_semaphore == (SemaphoreInfo *) NULL)
-    policy_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&policy_semaphore);
   LockSemaphoreInfo(policy_semaphore);
   if (policy_list != (LinkedListInfo *) NULL)
     policy_list=DestroyLinkedList(policy_list,DestroyPolicyElement);
diff --git a/MagickCore/random.c b/MagickCore/random.c
index b999072..e5eb921 100644
--- a/MagickCore/random.c
+++ b/MagickCore/random.c
@@ -762,7 +762,7 @@
 MagickPrivate void RandomComponentTerminus(void)
 {
   if (random_semaphore == (SemaphoreInfo *) NULL)
-    random_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&random_semaphore);
   RelinquishSemaphoreInfo(&random_semaphore);
 }
 
diff --git a/MagickCore/registry.c b/MagickCore/registry.c
index f0592b7..d5343c5 100644
--- a/MagickCore/registry.c
+++ b/MagickCore/registry.c
@@ -325,7 +325,7 @@
 MagickPrivate void RegistryComponentTerminus(void)
 {
   if (registry_semaphore == (SemaphoreInfo *) NULL)
-    registry_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&registry_semaphore);
   LockSemaphoreInfo(registry_semaphore);
   if (IsEventLogging() != MagickFalse)
     (void) LogMagickEvent(TraceEvent,GetMagickModule(),"...");
@@ -528,7 +528,7 @@
       (instantiate_registry == MagickFalse))
     {
       if (registry_semaphore == (SemaphoreInfo *) NULL)
-        registry_semaphore=AcquireSemaphoreInfo();
+        ActivateSemaphoreInfo(&registry_semaphore);
       LockSemaphoreInfo(registry_semaphore);
       if ((registry == (SplayTreeInfo *) NULL) &&
           (instantiate_registry == MagickFalse))
diff --git a/MagickCore/resource.c b/MagickCore/resource.c
index 9f99b64..f6da52a 100644
--- a/MagickCore/resource.c
+++ b/MagickCore/resource.c
@@ -167,7 +167,7 @@
   status=MagickFalse;
   (void) FormatMagickSize(size,MagickFalse,resource_request);
   if (resource_semaphore == (SemaphoreInfo *) NULL)
-    resource_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&resource_semaphore);
   LockSemaphoreInfo(resource_semaphore);
   switch (type)
   {
@@ -501,7 +501,7 @@
   if (file == -1)
     return(file);
   if (resource_semaphore == (SemaphoreInfo *) NULL)
-    resource_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&resource_semaphore);
   LockSemaphoreInfo(resource_semaphore);
   if (temporary_resources == (SplayTreeInfo *) NULL)
     temporary_resources=NewSplayTree(CompareSplayTreeString,
@@ -619,7 +619,7 @@
 
   resource=0;
   if (resource_semaphore == (SemaphoreInfo *) NULL)
-    resource_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&resource_semaphore);
   LockSemaphoreInfo(resource_semaphore);
   switch (type)
   {
@@ -708,7 +708,7 @@
   if (file == (const FILE *) NULL)
     file=stdout;
   if (resource_semaphore == (SemaphoreInfo *) NULL)
-    resource_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&resource_semaphore);
   LockSemaphoreInfo(resource_semaphore);
   (void) FormatMagickSize(resource_info.area_limit,MagickFalse,area_limit);
   (void) FormatMagickSize(resource_info.memory_limit,MagickTrue,memory_limit);
@@ -770,7 +770,7 @@
 
   (void) FormatMagickSize(size,MagickFalse,resource_request);
   if (resource_semaphore == (SemaphoreInfo *) NULL)
-    resource_semaphore=AcquireSemaphoreInfo();
+		ActivateSemaphoreInfo(&resource_semaphore);
   LockSemaphoreInfo(resource_semaphore);
   switch (type)
   {
diff --git a/MagickCore/semaphore.c b/MagickCore/semaphore.c
index 033a0ac..e8b4bab 100644
--- a/MagickCore/semaphore.c
+++ b/MagickCore/semaphore.c
@@ -236,6 +236,41 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   A c t i v a t e S e m a p h o r e I n f o                                 %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  ActivateSemaphoreInfo() acquires a semaphore.
+%
+%  The format of the ActivateSemaphoreInfo method is:
+%
+%      void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info)
+%
+%  A description of each parameter follows:
+%
+%    o semaphore_info: Specifies a pointer to an SemaphoreInfo structure.
+%
+*/
+MagickExport void ActivateSemaphoreInfo(SemaphoreInfo **semaphore_info)
+{
+  assert(semaphore_info != (SemaphoreInfo **) NULL);
+  if (*semaphore_info == (SemaphoreInfo *) NULL)
+    {
+      InitializeMagickMutex();
+      LockMagickMutex();
+      if (*semaphore_info == (SemaphoreInfo *) NULL)
+        *semaphore_info=AllocateSemaphoreInfo();
+      UnlockMagickMutex();
+    }
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   L o c k S e m a p h o r e I n f o                                         %
 %                                                                             %
 %                                                                             %
diff --git a/MagickCore/semaphore.h b/MagickCore/semaphore.h
index 80e5ee0..dcb047f 100644
--- a/MagickCore/semaphore.h
+++ b/MagickCore/semaphore.h
@@ -29,6 +29,7 @@
   *AcquireSemaphoreInfo(void);
 
 extern MagickExport void
+  ActivateSemaphoreInfo(SemaphoreInfo **),
   LockSemaphoreInfo(SemaphoreInfo *),
   RelinquishSemaphoreInfo(SemaphoreInfo **),
   UnlockSemaphoreInfo(SemaphoreInfo *);
diff --git a/MagickCore/type.c b/MagickCore/type.c
index 6d48791..22bf854 100644
--- a/MagickCore/type.c
+++ b/MagickCore/type.c
@@ -786,7 +786,7 @@
       (instantiate_type == MagickFalse))
     {
       if (type_semaphore == (SemaphoreInfo *) NULL)
-        type_semaphore=AcquireSemaphoreInfo();
+		    ActivateSemaphoreInfo(&type_semaphore);
       LockSemaphoreInfo(type_semaphore);
       if ((type_list == (SplayTreeInfo *) NULL) &&
           (instantiate_type == MagickFalse))
@@ -1390,7 +1390,7 @@
 MagickPrivate void TypeComponentTerminus(void)
 {
   if (type_semaphore == (SemaphoreInfo *) NULL)
-    type_semaphore=AcquireSemaphoreInfo();
+    ActivateSemaphoreInfo(&type_semaphore);
   LockSemaphoreInfo(type_semaphore);
   if (type_list != (SplayTreeInfo *) NULL)
     type_list=DestroySplayTree(type_list);