diff options
| author | Patrick Steinhardt <ps@pks.im> | 2018-06-06 14:31:28 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-06-06 14:31:28 +0200 |
| commit | 20306d36c8f3816335834f194593c5e3d6519cda (patch) | |
| tree | 090cd22fd58323e43f9eb88b83f17aa2db0a0414 | |
| parent | 991bf69136b61f319f6fe06241774668da6d37d9 (diff) | |
| parent | d7eca4c39cdad217a813a3f02f3b8eb3ce3159f9 (diff) | |
| download | libgit2-20306d36c8f3816335834f194593c5e3d6519cda.tar.gz | |
Merge pull request #4665 from neithernut/fix-refdb-glob
refdb_fs: fix regression: failure when globbing for non-existant references
| -rw-r--r-- | src/refdb_fs.c | 8 | ||||
| -rw-r--r-- | tests/refs/foreachglob.c | 5 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/refdb_fs.c b/src/refdb_fs.c index 9db62810b..0b4bbb408 100644 --- a/src/refdb_fs.c +++ b/src/refdb_fs.c @@ -538,12 +538,16 @@ static int iter_load_loose_paths(refdb_fs_backend *backend, refdb_fs_iter *iter) } if ((error = git_buf_printf(&path, "%s/", backend->commonpath)) < 0 || - (error = git_buf_put(&path, ref_prefix, ref_prefix_len)) < 0 || - (error = git_iterator_for_filesystem(&fsit, path.ptr, &fsit_opts)) < 0) { + (error = git_buf_put(&path, ref_prefix, ref_prefix_len)) < 0) { git_buf_free(&path); return error; } + if ((error = git_iterator_for_filesystem(&fsit, path.ptr, &fsit_opts)) < 0) { + git_buf_free(&path); + return (iter->glob && error == GIT_ENOTFOUND)? 0 : error; + } + error = git_buf_sets(&path, ref_prefix); while (!error && !git_iterator_advance(&entry, fsit)) { diff --git a/tests/refs/foreachglob.c b/tests/refs/foreachglob.c index a09191e79..a13529376 100644 --- a/tests/refs/foreachglob.c +++ b/tests/refs/foreachglob.c @@ -62,6 +62,11 @@ void test_refs_foreachglob__retrieve_local_branches(void) assert_retrieval("refs/heads/*", 12); } +void test_refs_foreachglob__retrieve_nonexistant(void) +{ + assert_retrieval("refs/nonexistent/*", 0); +} + void test_refs_foreachglob__retrieve_partially_named_references(void) { /* |
