diff options
author | René Scharfe <l.s.r@web.de> | 2020-05-21 11:52:54 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-05-21 11:03:13 -0700 |
commit | fe747043dc96fd5c151496f0e45dbf80de07793d (patch) | |
tree | 7971e7fb2c7202fad06be3f0fe2d489e4da76834 | |
parent | t1450: demonstrate undetected in-tree d/f conflict (diff) | |
download | tgif-fe747043dc96fd5c151496f0e45dbf80de07793d.tar.xz |
fsck: detect more in-tree d/f conflicts
If the conflict candidate file name from the top of the stack is not a
prefix of the current candiate directory then we can discard it as no
matching directory can come up later. But we are not done checking the
candidate directory -- the stack might still hold a matching file name,
so stay in the loop and check the next candidate file name.
Signed-off-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | fsck.c | 2 | ||||
-rwxr-xr-x | t/t1450-fsck.sh | 2 |
2 files changed, 2 insertions, 2 deletions
@@ -620,7 +620,7 @@ static int verify_ordered(unsigned mode1, const char *name1, if (!f_name) break; if (!skip_prefix(name2, f_name, &p)) - break; + continue; if (!*p) return TREE_HAS_DUPS; if (is_less_than_slash(*p)) { diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh index 7e70a253f8..6555a62099 100755 --- a/t/t1450-fsck.sh +++ b/t/t1450-fsck.sh @@ -261,7 +261,7 @@ check_duplicate_names () { check_duplicate_names success x x.1 x/ check_duplicate_names success x x.1.2 x.1/ x/ -check_duplicate_names failure x x.1 x.1.2 x/ +check_duplicate_names success x x.1 x.1.2 x/ test_expect_success 'unparseable tree object' ' test_oid_cache <<-\EOF && |