summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dir.c3
-rwxr-xr-xt/t3700-add.sh6
2 files changed, 8 insertions, 1 deletions
diff --git a/dir.c b/dir.c
index b48e19dc09..602282bd1b 100644
--- a/dir.c
+++ b/dir.c
@@ -24,8 +24,9 @@ int common_prefix(const char **pathspec)
prefix = slash - path + 1;
while ((next = *++pathspec) != NULL) {
int len = strlen(next);
- if (len >= prefix && !memcmp(path, next, len))
+ if (len >= prefix && !memcmp(path, next, prefix))
continue;
+ len = prefix - 1;
for (;;) {
if (!len)
return 0;
diff --git a/t/t3700-add.sh b/t/t3700-add.sh
index 08e035220c..ad8cc7d4ae 100755
--- a/t/t3700-add.sh
+++ b/t/t3700-add.sh
@@ -104,4 +104,10 @@ test_expect_success 'add ignored ones with -f' '
git-ls-files --error-unmatch d.ig/d.if d.ig/d.ig
'
+mkdir 1 1/2 1/3
+touch 1/2/a 1/3/b 1/2/c
+test_expect_success 'check correct prefix detection' '
+ git add 1/2/a 1/3/b 1/2/c
+'
+
test_done