diff --git a/MagickCore/coder.c b/MagickCore/coder.c
index 7960cd3..9ab4d95 100644
--- a/MagickCore/coder.c
+++ b/MagickCore/coder.c
@@ -810,6 +810,7 @@
             ResourceLimitError,"MemoryAllocationFailed","`%s'",
             coder_info->magick);
         coder_info=(CoderInfo *) NULL;
+        continue;
       }
     GetMagickToken(q,(const char **) NULL,token);
     if (*token != '=')
@@ -937,7 +938,7 @@
     if (coder_info == (CoderInfo *) NULL)
       {
         (void) ThrowMagickException(exception,GetMagickModule(),
-          ResourceLimitError,"MemoryAllocationFailed","`%s'",coder_info->name);
+          ResourceLimitError,"MemoryAllocationFailed","`%s'",p->name);
         continue;
       }
     (void) ResetMagickMemory(coder_info,0,sizeof(*coder_info));
diff --git a/MagickCore/color.c b/MagickCore/color.c
index 8f92263..6a45629 100644
--- a/MagickCore/color.c
+++ b/MagickCore/color.c
@@ -1958,6 +1958,7 @@
             ResourceLimitError,"MemoryAllocationFailed","`%s'",
             color_info->name);
         color_info=(ColorInfo *) NULL;
+        continue;
       }
     GetMagickToken(q,(const char **) NULL,token);
     if (*token != '=')
@@ -2100,7 +2101,7 @@
     if (color_info == (ColorInfo *) NULL)
       {
         (void) ThrowMagickException(exception,GetMagickModule(),
-          ResourceLimitError,"MemoryAllocationFailed","`%s'",color_info->name);
+          ResourceLimitError,"MemoryAllocationFailed","`%s'",p->name);
         continue;
       }
     (void) ResetMagickMemory(color_info,0,sizeof(*color_info));
diff --git a/MagickCore/configure.c b/MagickCore/configure.c
index 2434526..efd1e1c 100644
--- a/MagickCore/configure.c
+++ b/MagickCore/configure.c
@@ -1161,6 +1161,7 @@
             ResourceLimitError,"MemoryAllocationFailed","`%s'",
             configure_info->name);
         configure_info=(ConfigureInfo *) NULL;
+        continue;
       }
     /*
       Parse configure element.
@@ -1291,8 +1292,7 @@
     if (configure_info == (ConfigureInfo *) NULL)
       {
         (void) ThrowMagickException(exception,GetMagickModule(),
-          ResourceLimitError,"MemoryAllocationFailed","`%s'",
-          configure_info->name);
+          ResourceLimitError,"MemoryAllocationFailed","`%s'",p->name);
         continue;
       }
     (void) ResetMagickMemory(configure_info,0,sizeof(*configure_info));
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index 978f07e..cce4df4 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -1343,6 +1343,7 @@
             ResourceLimitError,"MemoryAllocationFailed","`%s'",
             delegate_info->commands);
         delegate_info=(DelegateInfo *) NULL;
+        continue;
       }
     GetMagickToken(q,(const char **) NULL,token);
     if (*token != '=')
diff --git a/MagickCore/log.c b/MagickCore/log.c
index 5029b96..3488609 100644
--- a/MagickCore/log.c
+++ b/MagickCore/log.c
@@ -1594,7 +1594,7 @@
     if (log_info == (LogInfo *) NULL)
       {
         (void) ThrowMagickException(exception,GetMagickModule(),
-          ResourceLimitError,"MemoryAllocationFailed","`%s'",log_info->name);
+          ResourceLimitError,"MemoryAllocationFailed","`%s'",p->filename);
         continue;
       }
     (void) ResetMagickMemory(log_info,0,sizeof(*log_info));
diff --git a/MagickCore/magic.c b/MagickCore/magic.c
index 6a6672f..c4b0a2e 100644
--- a/MagickCore/magic.c
+++ b/MagickCore/magic.c
@@ -792,6 +792,7 @@
             ResourceLimitError,"MemoryAllocationFailed","`%s'",
             magic_info->name);
         magic_info=(MagicInfo *) NULL;
+        continue;
       }
     GetMagickToken(q,(const char **) NULL,token);
     if (*token != '=')
@@ -983,7 +984,7 @@
     if (magic_info == (MagicInfo *) NULL)
       {
         (void) ThrowMagickException(exception,GetMagickModule(),
-          ResourceLimitError,"MemoryAllocationFailed","`%s'",magic_info->name);
+          ResourceLimitError,"MemoryAllocationFailed","`%s'",p->name);
         continue;
       }
     (void) ResetMagickMemory(magic_info,0,sizeof(*magic_info));
