From 643425b86ed9d031a5426b48a486d7706dca2621 Mon Sep 17 00:00:00 2001 From: Cristy Date: Sun, 12 Aug 2018 12:37:45 -0400 Subject: [PATCH] ... --- MagickCore/utility.c | 33 +++++++++++++-------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/MagickCore/utility.c b/MagickCore/utility.c index 3cda873e2..c35d13fdf 100644 --- a/MagickCore/utility.c +++ b/MagickCore/utility.c @@ -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; -- 2.40.0