The prefix check is not related the check of pathspec magic; also there
is no code that is relevant after we'd break the loop on a match for
"prefix:". So move the check before the loop and shortcircuit the outer
loop.

Signed-off-by: Stefan Beller <sbel...@google.com>
Signed-off-by: Junio C Hamano <gits...@pobox.com>
---
 pathspec.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/pathspec.c b/pathspec.c
index 67678fc..d44f8e7 100644
--- a/pathspec.c
+++ b/pathspec.c
@@ -107,21 +107,22 @@ static void eat_long_magic(struct pathspec_item *item, 
const char *elt,
                        nextat = copyfrom + len;
                if (!len)
                        continue;
+
+               if (starts_with(copyfrom, "prefix:")) {
+                       char *endptr;
+                       *pathspec_prefix = strtol(copyfrom + 7,
+                                                 &endptr, 10);
+                       if (endptr - copyfrom != len)
+                               die(_("invalid parameter for pathspec magic 
'prefix'"));
+                       continue;
+               }
+
                for (i = 0; i < ARRAY_SIZE(pathspec_magic); i++) {
                        if (strlen(pathspec_magic[i].name) == len &&
                            !strncmp(pathspec_magic[i].name, copyfrom, len)) {
                                *magic |= pathspec_magic[i].bit;
                                break;
                        }
-                       if (starts_with(copyfrom, "prefix:")) {
-                               char *endptr;
-                               *pathspec_prefix = strtol(copyfrom + 7,
-                                                         &endptr, 10);
-                               if (endptr - copyfrom != len)
-                                       die(_("invalid parameter for pathspec 
magic 'prefix'"));
-                               /* "i" would be wrong, but it does not matter */
-                               break;
-                       }
                }
                if (ARRAY_SIZE(pathspec_magic) <= i)
                        die(_("Invalid pathspec magic '%.*s' in '%s'"),
-- 
2.10.1.508.g6572022

Reply via email to