diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2013-10-19 09:41:24 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-10-22 10:49:43 -0700 |
commit | c8556c6213cf6dca63f29f98ad9d074f6c5f8233 (patch) | |
tree | a8cfbe3faac1bf61fba78f1cfb07cf741d1559ad /revision.c | |
parent | 625c3304e200f9bdc05626be1397311faa4962ba (diff) | |
download | git-c8556c6213cf6dca63f29f98ad9d074f6c5f8233.tar.gz git-c8556c6213cf6dca63f29f98ad9d074f6c5f8233.tar.xz |
Fix calling parse_pathspec with no paths nor PATHSPEC_PREFER_* flags
When parse_pathspec() is called with no paths, the behavior could be
either return no paths, or return one path that is cwd. Some commands
do the former, some the latter. parse_pathspec() itself does not make
either the default and requires the caller to specify either flag if
it may run into this situation.
I've grep'd through all parse_pathspec() call sites. Some pass
neither, but those are guaranteed never pass empty path to
parse_pathspec(). There are two call sites that may pass empty path
and are fixed with this patch.
[jc: added a test from Antoine's bug report]
Reported-by: Antoine Pelisse <apelisse@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/revision.c b/revision.c index 001623a92..e04fdd0cb 100644 --- a/revision.c +++ b/revision.c @@ -1372,7 +1372,8 @@ static void prepare_show_merge(struct rev_info *revs) i++; } free_pathspec(&revs->prune_data); - parse_pathspec(&revs->prune_data, PATHSPEC_ALL_MAGIC, 0, "", prune); + parse_pathspec(&revs->prune_data, PATHSPEC_ALL_MAGIC, + PATHSPEC_PREFER_FULL, "", prune); revs->limited = 1; } |