]> granicus.if.org Git - imagemagick/commitdiff
...
authorCristy <urban-warrior@imagemagick.org>
Sun, 12 Aug 2018 16:37:45 +0000 (12:37 -0400)
committerCristy <urban-warrior@imagemagick.org>
Sun, 12 Aug 2018 16:37:45 +0000 (12:37 -0400)
MagickCore/utility.c

index 3cda873e26d84b9cc890a57487caa1ed28afad04..c35d13fdf409e4926803d8fd369414a327617a3b 100644 (file)
@@ -1269,31 +1269,24 @@ MagickExport void GetPathComponent(const char *path,PathType type,
   }
   subimage_length=0;
   subimage_offset=0;
-  p=component;
-  if (*p != '\0')
-    p=component+strlen(component)-1;
-  if ((*p == ']') && (strchr(component,'[') != (char *) NULL) &&
-      (IsPathAccessible(path) == MagickFalse) &&
-      (strstr(component,"][") == (char *) NULL))
+  p=component+strlen(component)-1;
+  q=strrchr(component,'[');
+  if ((strlen(component) > 2) && (*p == ']') && (q != (char *) NULL) &&
+      ((q == component) || (*(q-1) != ']')) &&
+      (IsPathAccessible(path) == MagickFalse))
     {
       /*
         Look for scene specification (e.g. img0001.pcd[4]).
       */
-      for (q=p-1; q > component; q--)
-        if (*q == '[')
-          break;
-      if (*q == '[')
+      *p='\0';
+      if ((IsSceneGeometry(q+1,MagickFalse) == MagickFalse) &&
+          (IsGeometry(q+1) == MagickFalse))
+        *p=']';
+      else
         {
-          *p='\0';
-          if ((IsSceneGeometry(q+1,MagickFalse) == MagickFalse) &&
-              (IsGeometry(q+1) == MagickFalse))
-            *p=']';
-          else
-            {
-              subimage_length=(size_t) (p-q);
-              subimage_offset=magick_length+1+(size_t) (q-component);
-              *q='\0';
-            }
+          subimage_length=(size_t) (p-q);
+          subimage_offset=magick_length+1+(size_t) (q-component);
+          *q='\0';
         }
     }
   p=component;