зеркало из https://github.com/microsoft/git.git
dir: fix pattern matching on dirs
Within match_pathname(), one successful matching category happens when the pattern is equal to its non-wildcard prefix. At this point, we have checked that the input 'pathname' matches the pattern up to the prefix length, and then we subtraced that length from both 'patternlen' and 'namelen'. In the case of a directory match, this prefix match should be sufficient. However, the success condition only cared about _exact_ equality here. Instead, we should allow any path that agrees on this prefix in the case of PATTERN_FLAG_MUSTBEDIR. This case was not tested before because of the way unpack_trees() would match a parent directory before visiting the contained paths. This approach is changing, so we must change this comparison. Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
f6526728f9
Коммит
ed4958477b
2
dir.c
2
dir.c
|
@ -1294,7 +1294,7 @@ int match_pathname(const char *pathname, int pathlen,
|
|||
* then our prefix match is all we need; we
|
||||
* do not need to call fnmatch at all.
|
||||
*/
|
||||
if (!patternlen && !namelen)
|
||||
if (!patternlen && (!namelen || (flags & PATTERN_FLAG_MUSTBEDIR)))
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче