зеркало из https://github.com/microsoft/git.git
dir.c: fix match_pathname()
Given the pattern "1/2/3/4" and the path "1/2/3/4/f", the pattern prefix is "1/2/3/4". We will compare and remove the prefix from both pattern and path and come to this code /* * If the whole pattern did not have a wildcard, * then our prefix match is all we need; we * do not need to call fnmatch at all. */ if (!patternlen && !namelen) return 1; where patternlen is zero (full pattern consumed) and the remaining path in "name" is "/f". We fail to realize it's matched in this case and fall back to fnmatch(), which also fails to catch it. Fix it. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
0e35fcb412
Коммит
a60ea8fb66
2
dir.c
2
dir.c
|
@ -878,7 +878,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 || *name == '/'))
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче