Check to ensure token does not exceed maximum extent
diff --git a/MagickCore/channel.c b/MagickCore/channel.c
index e3fdd93..e7db65a 100644
--- a/MagickCore/channel.c
+++ b/MagickCore/channel.c
@@ -243,7 +243,7 @@
   channel_mask=UndefinedChannel;
   pixel=0.0;
   p=(char *) expression;
-  GetMagickToken(p,&p,token);
+  GetMagickToken(p,&p,MagickPathExtent,token);
   channel_op=ExtractChannelOp;
   for (channels=0; *token != '\0'; )
   {
@@ -257,7 +257,7 @@
     {
       case ',':
       {
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
         break;
       }
       case '|':
@@ -266,7 +266,7 @@
           source_image=GetNextImageInList(source_image);
         else
           source_image=GetFirstImageInList(source_image);
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
         break;
       }
       case ';':
@@ -291,7 +291,7 @@
           }
         AppendImageToList(&destination_image,canvas);
         destination_image=GetLastImageInList(destination_image);
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
         channels=0;
         destination_channel=RedPixelChannel;
         channel_mask=UndefinedChannel;
@@ -310,30 +310,30 @@
       }
     source_channel=(PixelChannel) i;
     channel_op=ExtractChannelOp;
-    GetMagickToken(p,&p,token);
+    GetMagickToken(p,&p,MagickPathExtent,token);
     if (*token == '<')
       {
         channel_op=ExchangeChannelOp;
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
       }
     if (*token == '=')
       {
         if (channel_op != ExchangeChannelOp)
           channel_op=AssignChannelOp;
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
       }
     if (*token == '>')
       {
         if (channel_op != ExchangeChannelOp)
           channel_op=TransferChannelOp;
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
       }
     switch (channel_op)
     {
       case AssignChannelOp:
       {
         pixel=StringToDoubleInterval(token,(double) QuantumRange+1.0);
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
         break;
       }
       case ExchangeChannelOp:
@@ -383,7 +383,7 @@
         if (((channels >= 1)  || (destination_channel >= 1)) &&
             (IsGrayColorspace(destination_image->colorspace) != MagickFalse))
           (void) SetImageColorspace(destination_image,sRGBColorspace,exception);
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
         break;
       }
       default:
diff --git a/MagickCore/coder.c b/MagickCore/coder.c
index 1231ba0..88f2bbf 100644
--- a/MagickCore/coder.c
+++ b/MagickCore/coder.c
@@ -834,7 +834,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -844,7 +844,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -853,7 +853,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -864,10 +864,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -926,11 +926,11 @@
         coder_info=(CoderInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'M':
diff --git a/MagickCore/color.c b/MagickCore/color.c
index cbffb1b..b93b1cf 100644
--- a/MagickCore/color.c
+++ b/MagickCore/color.c
@@ -2008,7 +2008,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -2018,7 +2018,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -2027,7 +2027,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -2038,10 +2038,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -2099,11 +2099,11 @@
         color_info=(ColorInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'C':
diff --git a/MagickCore/configure.c b/MagickCore/configure.c
index 768bc39..0962035 100644
--- a/MagickCore/configure.c
+++ b/MagickCore/configure.c
@@ -895,7 +895,7 @@
         /*
           Search $XDG_CONFIG_HOME/ImageMagick.
         */
-        (void) FormatLocaleString(path,MaxTextExtent,"%s%sImageMagick%s",
+        (void) FormatLocaleString(path,MagickPathExtent,"%s%sImageMagick%s",
           home,DirectorySeparator,DirectorySeparator);
         (void) AppendValueToLinkedList(paths,ConstantString(path));
         home=DestroyString(home);
@@ -1165,7 +1165,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -1175,7 +1175,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -1184,7 +1184,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -1195,10 +1195,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -1260,11 +1260,11 @@
     /*
       Parse configure element.
     */
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'N':
diff --git a/MagickCore/delegate.c b/MagickCore/delegate.c
index 0c13c9b..c8a4334 100644
--- a/MagickCore/delegate.c
+++ b/MagickCore/delegate.c
@@ -1519,7 +1519,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -1529,7 +1529,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -1538,7 +1538,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -1549,10 +1549,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -1611,11 +1611,11 @@
         delegate_info=(DelegateInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'C':
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index 1c05b1e..a305091 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -1792,7 +1792,7 @@
     /*
       Interpret graphic primitive.
     */
-    GetMagickToken(q,&q,keyword);
+    GetMagickToken(q,&q,MagickPathExtent,keyword);
     if (*keyword == '\0')
       break;
     if (*keyword == '#')
@@ -1817,27 +1817,27 @@
       {
         if (LocaleCompare("affine",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             affine.sx=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.rx=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.ry=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.sy=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.tx=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.ty=StringToDouble(token,(char **) NULL);
             break;
           }
@@ -1864,7 +1864,7 @@
           }
         if (LocaleCompare("border-color",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) QueryColorCompliance(token,AllCompliance,
               &graphic_context[n]->border_color,exception);
             break;
@@ -1880,7 +1880,7 @@
             /*
               Create clip mask.
             */
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) CloneString(&graphic_context[n]->clip_mask,token);
             (void) DrawClipPath(image,graphic_context[n],
               graphic_context[n]->clip_mask,exception);
@@ -1891,7 +1891,7 @@
             ssize_t
               fill_rule;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             fill_rule=ParseCommandOption(MagickFillRuleOptions,MagickFalse,
               token);
             if (fill_rule == -1)
@@ -1905,7 +1905,7 @@
             ssize_t
               clip_units;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             clip_units=ParseCommandOption(MagickClipPathOptions,MagickFalse,
               token);
             if (clip_units == -1)
@@ -1946,7 +1946,7 @@
             ssize_t
               decorate;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             decorate=ParseCommandOption(MagickDecorateOptions,MagickFalse,
               token);
             if (decorate == -1)
@@ -1957,7 +1957,7 @@
           }
         if (LocaleCompare("density",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) CloneString(&graphic_context[n]->density,token);
             break;
           }
@@ -1966,7 +1966,7 @@
             ssize_t
               direction;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             direction=ParseCommandOption(MagickDirectionOptions,MagickFalse,
               token);
             if (direction == -1)
@@ -1988,7 +1988,7 @@
           }
         if (LocaleCompare("encoding",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) CloneString(&graphic_context[n]->encoding,token);
             break;
           }
@@ -2000,7 +2000,7 @@
       {
         if (LocaleCompare("fill",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) FormatLocaleString(pattern,MagickPathExtent,"%s",token);
             if (GetImageArtifact(image,pattern) != (const char *) NULL)
               (void) DrawPatternPath(image,draw_info,token,
@@ -2027,7 +2027,7 @@
           }
         if (LocaleCompare("fill-opacity",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             factor=strchr(token,'%') != (char *) NULL ? 0.01 : 1.0;
             graphic_context[n]->fill.alpha=(double) QuantumRange*
               factor*StringToDouble(token,(char **) NULL);
@@ -2038,7 +2038,7 @@
             ssize_t
               fill_rule;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             fill_rule=ParseCommandOption(MagickFillRuleOptions,MagickFalse,
               token);
             if (fill_rule == -1)
@@ -2049,7 +2049,7 @@
           }
         if (LocaleCompare("font",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) CloneString(&graphic_context[n]->font,token);
             if (LocaleCompare("none",token) == 0)
               graphic_context[n]->font=(char *)
@@ -2058,13 +2058,13 @@
           }
         if (LocaleCompare("font-family",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) CloneString(&graphic_context[n]->family,token);
             break;
           }
         if (LocaleCompare("font-size",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->pointsize=StringToDouble(token,(char **) NULL);
             break;
           }
@@ -2073,7 +2073,7 @@
             ssize_t
               stretch;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             stretch=ParseCommandOption(MagickStretchOptions,MagickFalse,token);
             if (stretch == -1)
               status=MagickFalse;
@@ -2086,7 +2086,7 @@
             ssize_t
               style;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             style=ParseCommandOption(MagickStyleOptions,MagickFalse,token);
             if (style == -1)
               status=MagickFalse;
@@ -2099,7 +2099,7 @@
             ssize_t
               weight;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             weight=ParseCommandOption(MagickWeightOptions,MagickFalse,
               token);
             if (weight == -1)
@@ -2115,7 +2115,7 @@
       {
         if (LocaleCompare("gradient-units",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             break;
           }
         if (LocaleCompare("gravity",keyword) == 0)
@@ -2123,7 +2123,7 @@
             ssize_t
               gravity;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             gravity=ParseCommandOption(MagickGravityOptions,MagickFalse,token);
             if (gravity == -1)
               status=MagickFalse;
@@ -2143,7 +2143,7 @@
               compose;
 
             primitive_type=ImagePrimitive;
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             compose=ParseCommandOption(MagickComposeOptions,MagickFalse,token);
             if (compose == -1)
               status=MagickFalse;
@@ -2153,14 +2153,14 @@
           }
         if (LocaleCompare("interline-spacing",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->interline_spacing=StringToDouble(token,
               (char **) NULL);
             break;
           }
         if (LocaleCompare("interword-spacing",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->interword_spacing=StringToDouble(token,
               (char **) NULL);
             break;
@@ -2173,7 +2173,7 @@
       {
         if (LocaleCompare("kerning",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->kerning=StringToDouble(token,(char **) NULL);
             break;
           }
@@ -2194,12 +2194,12 @@
       {
         if (LocaleCompare("offset",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             break;
           }
         if (LocaleCompare("opacity",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             factor=strchr(token,'%') != (char *) NULL ? 0.01 : 1.0;
             graphic_context[n]->alpha=ClampToQuantum(QuantumRange*(1.0-((1.0-
               QuantumScale*graphic_context[n]->alpha)*factor*
@@ -2236,7 +2236,7 @@
           }
         if (LocaleCompare("pop",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (LocaleCompare("clip-path",token) == 0)
               break;
             if (LocaleCompare("defs",token) == 0)
@@ -2268,27 +2268,27 @@
           }
         if (LocaleCompare("push",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (LocaleCompare("clip-path",token) == 0)
               {
                 char
                   name[MagickPathExtent];
 
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 (void) FormatLocaleString(name,MagickPathExtent,"%s",token);
                 for (p=q; *q != '\0'; )
                 {
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                   if (LocaleCompare(token,"pop") != 0)
                     continue;
-                  GetMagickToken(q,(const char **) NULL,token);
+                  GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
                   if (LocaleCompare(token,"clip-path") != 0)
                     continue;
                   break;
                 }
                 (void) CopyMagickString(token,p,(size_t) (q-p-4+1));
                 (void) SetImageArtifact(image,name,token);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 break;
               }
             if (LocaleCompare("gradient",token) == 0)
@@ -2301,36 +2301,36 @@
                 SegmentInfo
                   segment;
 
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 (void) CopyMagickString(name,token,MagickPathExtent);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 (void) CopyMagickString(type,token,MagickPathExtent);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 segment.x1=StringToDouble(token,(char **) NULL);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                 segment.y1=StringToDouble(token,(char **) NULL);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                 segment.x2=StringToDouble(token,(char **) NULL);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                 segment.y2=StringToDouble(token,(char **) NULL);
                 if (LocaleCompare(type,"radial") == 0)
                   {
-                    GetMagickToken(q,&q,token);
+                    GetMagickToken(q,&q,MagickPathExtent,token);
                     if (*token == ',')
-                      GetMagickToken(q,&q,token);
+                      GetMagickToken(q,&q,MagickPathExtent,token);
                   }
                 for (p=q; *q != '\0'; )
                 {
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                   if (LocaleCompare(token,"pop") != 0)
                     continue;
-                  GetMagickToken(q,(const char **) NULL,token);
+                  GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
                   if (LocaleCompare(token,"gradient") != 0)
                     continue;
                   break;
@@ -2359,7 +2359,7 @@
                   MagickMax(fabs(bounds.y2-bounds.y1+1.0),1.0),
                   bounds.x1,bounds.y1);
                 (void) SetImageArtifact(image,key,geometry);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 break;
               }
             if (LocaleCompare("pattern",token) == 0)
@@ -2371,32 +2371,32 @@
                 RectangleInfo
                   pattern_bounds;
 
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 (void) CopyMagickString(name,token,MagickPathExtent);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 pattern_bounds.x=(ssize_t) ceil(StringToDouble(token,
                   (char **) NULL)-0.5);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                 pattern_bounds.y=(ssize_t) ceil(StringToDouble(token,
                   (char **) NULL)-0.5);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                 pattern_bounds.width=(size_t) floor(StringToDouble(token,
                   (char **) NULL)+0.5);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                 pattern_bounds.height=(size_t) floor(StringToDouble(token,
                   (char **) NULL)+0.5);
                 for (p=q; *q != '\0'; )
                 {
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                   if (LocaleCompare(token,"pop") != 0)
                     continue;
-                  GetMagickToken(q,(const char **) NULL,token);
+                  GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
                   if (LocaleCompare(token,"pattern") != 0)
                     continue;
                   break;
@@ -2411,7 +2411,7 @@
                   (double)pattern_bounds.height,(double)pattern_bounds.x,
                   (double)pattern_bounds.y);
                 (void) SetImageArtifact(image,key,geometry);
-                GetMagickToken(q,&q,token);
+                GetMagickToken(q,&q,MagickPathExtent,token);
                 break;
               }
             if (LocaleCompare("graphic-context",token) == 0)
@@ -2448,7 +2448,7 @@
           }
         if (LocaleCompare("rotate",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             angle=StringToDouble(token,(char **) NULL);
             affine.sx=cos(DegreesToRadians(fmod((double) angle,360.0)));
             affine.rx=sin(DegreesToRadians(fmod((double) angle,360.0)));
@@ -2469,24 +2469,24 @@
       {
         if (LocaleCompare("scale",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             affine.sx=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.sy=StringToDouble(token,(char **) NULL);
             break;
           }
         if (LocaleCompare("skewX",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             angle=StringToDouble(token,(char **) NULL);
             affine.ry=sin(DegreesToRadians(angle));
             break;
           }
         if (LocaleCompare("skewY",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             angle=StringToDouble(token,(char **) NULL);
             affine.rx=(-tan(DegreesToRadians(angle)/2.0));
             break;
@@ -2509,17 +2509,17 @@
                   image->filename);
                 break;
               }
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) QueryColorCompliance(token,AllCompliance,&stop_color,
               exception);
             stops[number_stops-1].color=stop_color;
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             stops[number_stops-1].offset=StringToDouble(token,(char **) NULL);
             break;
           }
         if (LocaleCompare("stroke",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) FormatLocaleString(pattern,MagickPathExtent,"%s",token);
             if (GetImageArtifact(image,pattern) != (const char *) NULL)
               (void) DrawPatternPath(image,draw_info,token,
@@ -2546,7 +2546,7 @@
           }
         if (LocaleCompare("stroke-antialias",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->stroke_antialias=
               StringToLong(token) != 0 ? MagickTrue : MagickFalse;
             break;
@@ -2562,14 +2562,14 @@
                   *r;
 
                 r=q;
-                GetMagickToken(r,&r,token);
+                GetMagickToken(r,&r,MagickPathExtent,token);
                 if (*token == ',')
-                  GetMagickToken(r,&r,token);
+                  GetMagickToken(r,&r,MagickPathExtent,token);
                 for (x=0; IsPoint(token) != MagickFalse; x++)
                 {
-                  GetMagickToken(r,&r,token);
+                  GetMagickToken(r,&r,MagickPathExtent,token);
                   if (*token == ',')
-                    GetMagickToken(r,&r,token);
+                    GetMagickToken(r,&r,MagickPathExtent,token);
                 }
                 graphic_context[n]->dash_pattern=(double *)
                   AcquireQuantumMemory((size_t) (2UL*x+1UL),
@@ -2583,9 +2583,9 @@
                   }
                 for (j=0; j < x; j++)
                 {
-                  GetMagickToken(q,&q,token);
+                  GetMagickToken(q,&q,MagickPathExtent,token);
                   if (*token == ',')
-                    GetMagickToken(q,&q,token);
+                    GetMagickToken(q,&q,MagickPathExtent,token);
                   graphic_context[n]->dash_pattern[j]=StringToDouble(token,
                     (char **) NULL);
                 }
@@ -2596,12 +2596,12 @@
                 graphic_context[n]->dash_pattern[j]=0.0;
                 break;
               }
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             break;
           }
         if (LocaleCompare("stroke-dashoffset",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->dash_offset=StringToDouble(token,
               (char **) NULL);
             break;
@@ -2611,7 +2611,7 @@
             ssize_t
               linecap;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             linecap=ParseCommandOption(MagickLineCapOptions,MagickFalse,token);
             if (linecap == -1)
               status=MagickFalse;
@@ -2624,7 +2624,7 @@
             ssize_t
               linejoin;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             linejoin=ParseCommandOption(MagickLineJoinOptions,MagickFalse,
               token);
             if (linejoin == -1)
@@ -2635,13 +2635,13 @@
           }
         if (LocaleCompare("stroke-miterlimit",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->miterlimit=StringToUnsignedLong(token);
             break;
           }
         if (LocaleCompare("stroke-opacity",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             factor=strchr(token,'%') != (char *) NULL ? 0.01 : 1.0;
             graphic_context[n]->stroke.alpha=(double) QuantumRange*
               factor*StringToDouble(token,(char **) NULL);
@@ -2649,7 +2649,7 @@
           }
         if (LocaleCompare("stroke-width",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->stroke_width=StringToDouble(token,
               (char **) NULL);
             break;
@@ -2670,7 +2670,7 @@
             ssize_t
               align;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             align=ParseCommandOption(MagickAlignOptions,MagickFalse,token);
             if (align == -1)
               status=MagickFalse;
@@ -2683,7 +2683,7 @@
             ssize_t
               align;
 
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             align=ParseCommandOption(MagickAlignOptions,MagickFalse,token);
             if (align == -1)
               status=MagickFalse;
@@ -2693,25 +2693,25 @@
           }
         if (LocaleCompare("text-antialias",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->text_antialias=
               StringToLong(token) != 0 ? MagickTrue : MagickFalse;
             break;
           }
         if (LocaleCompare("text-undercolor",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             (void) QueryColorCompliance(token,AllCompliance,
               &graphic_context[n]->undercolor,exception);
             break;
           }
         if (LocaleCompare("translate",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             affine.tx=StringToDouble(token,(char **) NULL);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             affine.ty=StringToDouble(token,(char **) NULL);
             break;
           }
@@ -2723,22 +2723,22 @@
       {
         if (LocaleCompare("viewbox",keyword) == 0)
           {
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->viewbox.x=(ssize_t) ceil(StringToDouble(token,
               (char **) NULL)-0.5);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->viewbox.y=(ssize_t) ceil(StringToDouble(token,
               (char **) NULL)-0.5);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->viewbox.width=(size_t) floor(StringToDouble(
               token,(char **) NULL)+0.5);
-            GetMagickToken(q,&q,token);
+            GetMagickToken(q,&q,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(q,&q,token);
+              GetMagickToken(q,&q,MagickPathExtent,token);
             graphic_context[n]->viewbox.height=(size_t) floor(StringToDouble(
               token,(char **) NULL)+0.5);
             break;
@@ -2803,15 +2803,15 @@
       */
       if (IsPoint(q) == MagickFalse)
         break;
-      GetMagickToken(q,&q,token);
+      GetMagickToken(q,&q,MagickPathExtent,token);
       point.x=StringToDouble(token,(char **) NULL);
-      GetMagickToken(q,&q,token);
+      GetMagickToken(q,&q,MagickPathExtent,token);
       if (*token == ',')
-        GetMagickToken(q,&q,token);
+        GetMagickToken(q,&q,MagickPathExtent,token);
       point.y=StringToDouble(token,(char **) NULL);
-      GetMagickToken(q,(const char **) NULL,token);
+      GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
       if (*token == ',')
-        GetMagickToken(q,&q,token);
+        GetMagickToken(q,&q,MagickPathExtent,token);
       primitive_info[i].primitive=primitive_type;
       primitive_info[i].point=point;
       primitive_info[i].coordinates=0;
@@ -2891,7 +2891,7 @@
           *s,
           *t;
 
-        GetMagickToken(q,&q,token);
+        GetMagickToken(q,&q,MagickPathExtent,token);
         length=1;
         t=token;
         for (s=token; *s != '\0'; s=t)
@@ -3068,7 +3068,7 @@
             status=MagickFalse;
             break;
           }
-        GetMagickToken(q,&q,token);
+        GetMagickToken(q,&q,MagickPathExtent,token);
         method=ParseCommandOption(MagickMethodOptions,MagickFalse,token);
         if (method == -1)
           status=MagickFalse;
@@ -3084,7 +3084,7 @@
             break;
           }
         if (*token != ',')
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         primitive_info[j].text=AcquireString(token);
         break;
       }
@@ -3095,7 +3095,7 @@
             status=MagickFalse;
             break;
           }
-        GetMagickToken(q,&q,token);
+        GetMagickToken(q,&q,MagickPathExtent,token);
         primitive_info[j].text=AcquireString(token);
         break;
       }
@@ -5387,33 +5387,33 @@
         */
         do
         {
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           arc.x=StringToDouble(token,(char **) NULL);
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           arc.y=StringToDouble(token,(char **) NULL);
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           angle=StringToDouble(token,(char **) NULL);
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           large_arc=StringToLong(token) != 0 ? MagickTrue : MagickFalse;
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           sweep=StringToLong(token) != 0 ? MagickTrue : MagickFalse;
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           x=StringToDouble(token,(char **) NULL);
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           y=StringToDouble(token,(char **) NULL);
           end.x=(double) (attribute == (int) 'A' ? x : point.x+x);
           end.y=(double) (attribute == (int) 'A' ? y : point.y+y);
@@ -5438,13 +5438,13 @@
           points[0]=point;
           for (i=1; i < 4; i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             x=StringToDouble(token,(char **) NULL);
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             y=StringToDouble(token,(char **) NULL);
             end.x=(double) (attribute == (int) 'C' ? x : point.x+x);
             end.y=(double) (attribute == (int) 'C' ? y : point.y+y);
@@ -5463,9 +5463,9 @@
       {
         do
         {
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           x=StringToDouble(token,(char **) NULL);
           point.x=(double) (attribute == (int) 'H' ? x: point.x+x);
           TracePoint(q,point);
@@ -5478,13 +5478,13 @@
       {
         do
         {
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           x=StringToDouble(token,(char **) NULL);
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           y=StringToDouble(token,(char **) NULL);
           point.x=(double) (attribute == (int) 'L' ? x : point.x+x);
           point.y=(double) (attribute == (int) 'L' ? y : point.y+y);
@@ -5505,13 +5505,13 @@
         i=0;
         do
         {
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           x=StringToDouble(token,(char **) NULL);
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           y=StringToDouble(token,(char **) NULL);
           point.x=(double) (attribute == (int) 'M' ? x : point.x+x);
           point.y=(double) (attribute == (int) 'M' ? y : point.y+y);
@@ -5539,13 +5539,13 @@
           points[0]=point;
           for (i=1; i < 3; i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             x=StringToDouble(token,(char **) NULL);
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             y=StringToDouble(token,(char **) NULL);
             if (*p == ',')
               p++;
@@ -5574,13 +5574,13 @@
           points[1].y=2.0*points[3].y-points[2].y;
           for (i=2; i < 4; i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             x=StringToDouble(token,(char **) NULL);
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             y=StringToDouble(token,(char **) NULL);
             if (*p == ',')
               p++;
@@ -5614,13 +5614,13 @@
           points[1].y=2.0*points[2].y-points[1].y;
           for (i=2; i < 3; i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             x=StringToDouble(token,(char **) NULL);
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             y=StringToDouble(token,(char **) NULL);
             end.x=(double) (attribute == (int) 'T' ? x : point.x+x);
             end.y=(double) (attribute == (int) 'T' ? y : point.y+y);
@@ -5644,9 +5644,9 @@
       {
         do
         {
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           if (*token == ',')
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
           y=StringToDouble(token,(char **) NULL);
           point.y=(double) (attribute == (int) 'V' ? y : point.y+y);
           TracePoint(q,point);
diff --git a/MagickCore/enhance.c b/MagickCore/enhance.c
index 3797cac..b80882c 100644
--- a/MagickCore/enhance.c
+++ b/MagickCore/enhance.c
@@ -577,9 +577,9 @@
           p=(const char *) content;
           for (i=0; (*p != '\0') && (i < 3); i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             switch (i)
             {
               case 0:
@@ -609,9 +609,9 @@
           p=(const char *) content;
           for (i=0; (*p != '\0') && (i < 3); i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             switch (i)
             {
               case 0:
@@ -642,9 +642,9 @@
           p=(const char *) content;
           for (i=0; (*p != '\0') && (i < 3); i++)
           {
-            GetMagickToken(p,&p,token);
+            GetMagickToken(p,&p,MagickPathExtent,token);
             if (*token == ',')
-              GetMagickToken(p,&p,token);
+              GetMagickToken(p,&p,MagickPathExtent,token);
             switch (i)
             {
               case 0:
@@ -679,7 +679,7 @@
         {
           content=GetXMLTreeContent(saturation);
           p=(const char *) content;
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
           color_correction.saturation=StringToDouble(token,(char **) NULL);
         }
     }
diff --git a/MagickCore/geometry.c b/MagickCore/geometry.c
index 0c7e278..d60fc00 100644
--- a/MagickCore/geometry.c
+++ b/MagickCore/geometry.c
@@ -729,9 +729,9 @@
   p=(char *) geometry;
   for (i=0; (*p != '\0') && (i < 6); i++)
   {
-    GetMagickToken(p,&p,token);
+    GetMagickToken(p,&p,MagickPathExtent,token);
     if (*token == ',')
-      GetMagickToken(p,&p,token);
+      GetMagickToken(p,&p,MagickPathExtent,token);
     switch (i)
     {
       case 0:
@@ -864,7 +864,7 @@
     c=(int) ((unsigned char) *p);
     if (isspace(c) != 0)
       {
-        (void) CopyMagickString(p,p+1,MaxTextExtent);
+        (void) CopyMagickString(p,p+1,MagickPathExtent);
         continue;
       }
     switch (c)
diff --git a/MagickCore/locale.c b/MagickCore/locale.c
index 7340fc3..91f900c 100644
--- a/MagickCore/locale.c
+++ b/MagickCore/locale.c
@@ -1193,7 +1193,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickLocaleExtent);
@@ -1204,7 +1204,7 @@
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
         {
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           while (isspace((int) ((unsigned char) *q)) != 0)
             q++;
         }
@@ -1217,7 +1217,7 @@
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
         {
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           while (isspace((int) ((unsigned char) *q)) != 0)
             q++;
         }
@@ -1231,10 +1231,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickLocaleExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"locale") == 0)
             {
               if (LocaleCompare(locale,token) != 0)
@@ -1281,10 +1281,10 @@
         while ((*token != '>') && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickLocaleExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         }
         continue;
       }
@@ -1306,10 +1306,10 @@
         while ((*token != '>') && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickLocaleExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"name") == 0)
             {
               (void) ConcatenateMagickString(tag,token,MagickLocaleExtent);
@@ -1368,7 +1368,7 @@
         (void) ConcatenateMagickString(tag,"/",MagickLocaleExtent);
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
   }
diff --git a/MagickCore/log.c b/MagickCore/log.c
index b22c011..eb1deff 100644
--- a/MagickCore/log.c
+++ b/MagickCore/log.c
@@ -1448,7 +1448,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -1458,7 +1458,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -1467,7 +1467,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -1478,10 +1478,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -1538,11 +1538,11 @@
         log_info=(LogInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'E':
diff --git a/MagickCore/magic.c b/MagickCore/magic.c
index 34715cf..c3f38db 100644
--- a/MagickCore/magic.c
+++ b/MagickCore/magic.c
@@ -855,7 +855,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -865,7 +865,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -874,7 +874,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -885,10 +885,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -947,11 +947,11 @@
         magic_info=(MagicInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'N':
diff --git a/MagickCore/module.c b/MagickCore/module.c
index 9ea97ba..e27d542 100644
--- a/MagickCore/module.c
+++ b/MagickCore/module.c
@@ -792,7 +792,7 @@
         /*
           Search $XDG_CONFIG_HOME/ImageMagick.
         */
-        (void) FormatLocaleString(path,MaxTextExtent,"%s%sImageMagick%s%s",
+        (void) FormatLocaleString(path,MagickPathExtent,"%s%sImageMagick%s%s",
           home,DirectorySeparator,DirectorySeparator,filename);
         home=DestroyString(home);
         if (IsPathAccessible(path) != MagickFalse)
diff --git a/MagickCore/morphology.c b/MagickCore/morphology.c
index 649c1bc..65a2d9a 100644
--- a/MagickCore/morphology.c
+++ b/MagickCore/morphology.c
@@ -298,9 +298,9 @@
         p++;  /* ignore "'" chars for convolve filter usage - Cristy */
       for (i=0; p < end; i++)
       {
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
         if (*token == ',')
-          GetMagickToken(p,&p,token);
+          GetMagickToken(p,&p,MagickPathExtent,token);
       }
       /* set the size of the kernel - old sized square */
       kernel->width = kernel->height= (size_t) sqrt((double) i+1.0);
@@ -320,9 +320,9 @@
   kernel->negative_range = kernel->positive_range = 0.0;
   for (i=0; (i < (ssize_t) (kernel->width*kernel->height)) && (p < end); i++)
   {
-    GetMagickToken(p,&p,token);
+    GetMagickToken(p,&p,MagickPathExtent,token);
     if (*token == ',')
-      GetMagickToken(p,&p,token);
+      GetMagickToken(p,&p,MagickPathExtent,token);
     if (    LocaleCompare("nan",token) == 0
         || LocaleCompare("-",token) == 0 ) {
       kernel->values[i] = nan; /* this value is not part of neighbourhood */
@@ -338,7 +338,7 @@
   }
 
   /* sanity check -- no more values in kernel definition */
-  GetMagickToken(p,&p,token);
+  GetMagickToken(p,&p,MagickPathExtent,token);
   if ( *token != '\0' && *token != ';' && *token != '\'' )
     return(DestroyKernelInfo(kernel));
 
@@ -393,7 +393,7 @@
     type;
 
   /* Parse special 'named' kernel */
-  GetMagickToken(kernel_string,&p,token);
+  GetMagickToken(kernel_string,&p,MagickPathExtent,token);
   type=ParseCommandOption(MagickKernelOptions,MagickFalse,token);
   if ( type < 0 || type == UserDefinedKernel )
     return((KernelInfo *) NULL);  /* not a valid named kernel */
@@ -509,7 +509,7 @@
       p=(const char *) kernel_cache;
     }    
   kernel=NULL;
-  while (GetMagickToken(p,NULL,token), *token != '\0')
+  while (GetMagickToken(p,(const char **) NULL,MagickPathExtent,token), *token != '\0')
   {
     /* ignore extra or multiple ';' kernel separators */
     if (*token != ';')
diff --git a/MagickCore/option.c b/MagickCore/option.c
index 48fb2fc..aba08a1 100644
--- a/MagickCore/option.c
+++ b/MagickCore/option.c
@@ -2758,7 +2758,7 @@
   ssize_t
     channel;
 
-  GetMagickToken(channels,NULL,token);
+  GetMagickToken(channels,(const char **) NULL,MagickPathExtent,token);
   if ((*token == ';') || (*token == '|'))
     return(RedPixelChannel);
   channel=ParseCommandOption(MagickPixelChannelOptions,MagickTrue,token);
diff --git a/MagickCore/policy.c b/MagickCore/policy.c
index 67702a9..da1ff58 100644
--- a/MagickCore/policy.c
+++ b/MagickCore/policy.c
@@ -763,7 +763,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -773,7 +773,7 @@
           Docdomain element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -782,7 +782,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -793,10 +793,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -854,11 +854,11 @@
         policy_info=(PolicyInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'D':
diff --git a/MagickCore/threshold.c b/MagickCore/threshold.c
index 4168e57..76f9382 100644
--- a/MagickCore/threshold.c
+++ b/MagickCore/threshold.c
@@ -1346,9 +1346,9 @@
   if ((p != (char *) NULL) && (isdigit((int) ((unsigned char) *(++p))) != 0))
     for (i=0; (*p != '\0') && (i < MaxPixelChannels); i++)
     {
-      GetMagickToken(p,&p,token);
+      GetMagickToken(p,&p,MagickPathExtent,token);
       if (*token == ',')
-        GetMagickToken(p,&p,token);
+        GetMagickToken(p,&p,MagickPathExtent,token);
       levels[i]=StringToDouble(token,(char **) NULL);
     }
   for (i=0; i < MaxPixelChannels; i++)
diff --git a/MagickCore/token.c b/MagickCore/token.c
index 1d8022d..e36d216 100644
--- a/MagickCore/token.c
+++ b/MagickCore/token.c
@@ -163,10 +163,13 @@
 %
 %    o end: point to the end of the token sequence.
 %
+%    o extent: maximum extent of the token.
+%
 %    o token: copy the token to this buffer.
 %
 */
-MagickExport void GetMagickToken(const char *start,const char **end,char *token)
+MagickExport void GetMagickToken(const char *start,const char **end,
+  const size_t extent,char *token)
 {
   double
     value;
@@ -213,15 +216,18 @@
               p++;
               break;
             }
-        token[i++]=(*p);
+        if (i < (extent-1))
+          token[i++]=(*p);
       }
       break;
     }
     case '/':
     {
-      token[i++]=(*p++);
-      if ((*p == '>') || (*p == '/'))
+      if (i < (extent-1))
         token[i++]=(*p++);
+      if ((*p == '>') || (*p == '/'))
+        if (i < (extent-1))
+          token[i++]=(*p++);
       break;
     }
     default:
@@ -234,32 +240,36 @@
       if ((p != q) && (*p != ','))
         {
           for ( ; (p < q) && (*p != ','); p++)
-            token[i++]=(*p);
+            if (i < (extent-1))
+              token[i++]=(*p);
           if (*p == '%')
-            token[i++]=(*p++);
+            if (i < (extent-1))
+              token[i++]=(*p++);
           break;
         }
       if ((*p != '\0') && (isalpha((int) ((unsigned char) *p)) == 0) &&
           (*p != *DirectorySeparator) && (*p != '#') && (*p != '<'))
         {
-          token[i++]=(*p++);
+          if (i < (extent-1))
+            token[i++]=(*p++);
           break;
         }
       for ( ; *p != '\0'; p++)
       {
         if (((isspace((int) ((unsigned char) *p)) != 0) || (*p == '=') ||
-            (*p == ':') || (*p == ',') || (*p == '|') || (*p == ';')) &&
-            (*(p-1) != '\\'))
+            (*p == ',') || (*p == ':') || (*p == ';')) && (*(p-1) != '\\'))
           break;
         if ((i > 0) && (*p == '<'))
           break;
-        token[i++]=(*p);
+        if (i < (extent-1))
+          token[i++]=(*p);
         if (*p == '>')
           break;
         if (*p == '(')
           for (p++; *p != '\0'; p++)
           {
-            token[i++]=(*p);
+            if (i < (extent-1))
+              token[i++]=(*p);
             if ((*p == ')') && (*(p-1) != '\\'))
               break;
           }
diff --git a/MagickCore/type.c b/MagickCore/type.c
index f851b98..1ac7094 100644
--- a/MagickCore/type.c
+++ b/MagickCore/type.c
@@ -1108,7 +1108,7 @@
     /*
       Interpret XML.
     */
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     if (*token == '\0')
       break;
     (void) CopyMagickString(keyword,token,MagickPathExtent);
@@ -1118,7 +1118,7 @@
           Doctype element.
         */
         while ((LocaleNCompare(q,"]>",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleNCompare(keyword,"<!--",4) == 0)
@@ -1127,7 +1127,7 @@
           Comment element.
         */
         while ((LocaleNCompare(q,"->",2) != 0) && (*q != '\0'))
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
         continue;
       }
     if (LocaleCompare(keyword,"<include") == 0)
@@ -1138,10 +1138,10 @@
         while (((*token != '/') && (*(token+1) != '>')) && (*q != '\0'))
         {
           (void) CopyMagickString(keyword,token,MagickPathExtent);
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (*token != '=')
             continue;
-          GetMagickToken(q,&q,token);
+          GetMagickToken(q,&q,MagickPathExtent,token);
           if (LocaleCompare(keyword,"file") == 0)
             {
               if (depth > 200)
@@ -1203,11 +1203,11 @@
         type_info=(TypeInfo *) NULL;
         continue;
       }
-    GetMagickToken(q,(const char **) NULL,token);
+    GetMagickToken(q,(const char **) NULL,MagickPathExtent,token);
     if (*token != '=')
       continue;
-    GetMagickToken(q,&q,token);
-    GetMagickToken(q,&q,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
+    GetMagickToken(q,&q,MagickPathExtent,token);
     switch (*keyword)
     {
       case 'E':
diff --git a/MagickCore/vision.c b/MagickCore/vision.c
index e93c2c7..18f4d43 100644
--- a/MagickCore/vision.c
+++ b/MagickCore/vision.c
@@ -682,7 +682,7 @@
           for (i=0; i < (ssize_t) component_image->colors; i++)
           {
             char
-              mean_color[MaxTextExtent];
+              mean_color[MagickPathExtent];
 
             if (status == MagickFalse)
               break;