diff options
author | Edward Thomson <ethomson@edwardthomson.com> | 2017-06-12 12:56:40 +0100 |
---|---|---|
committer | Edward Thomson <ethomson@edwardthomson.com> | 2017-06-12 12:56:40 +0100 |
commit | cb3010c54a4b35e8799a157bdff4eae0378eb8db (patch) | |
tree | 543f816c47836c29a70cbac86718763adf623382 | |
parent | bd6928096d7a4c8f26b55a1e9ec710faeee7db93 (diff) | |
download | libgit2-ethomson/read_prefix.tar.gz |
odb_read_prefix: reset error in backends loopethomson/read_prefix
When looking for an object by prefix, we query all the backends so that
we can ensure that there is no ambiguity. We need to reset the `error`
value between backends; otherwise the first backend may find an object
by prefix, but subsequent backends may not. If we do not reset the
`error` value then it will remain at `GIT_ENOTFOUND` and `read_prefix_1`
will fail, despite having actually found an object.
-rw-r--r-- | src/odb.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -1116,8 +1116,11 @@ static int read_prefix_1(git_odb_object **out, git_odb *db, if (b->read_prefix != NULL) { git_oid full_oid; error = b->read_prefix(&full_oid, &raw.data, &raw.len, &raw.type, b, key, len); - if (error == GIT_ENOTFOUND || error == GIT_PASSTHROUGH) + + if (error == GIT_ENOTFOUND || error == GIT_PASSTHROUGH) { + error = 0; continue; + } if (error) goto out; |