diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2015-05-15 12:15:45 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-05-15 12:15:45 +0200 |
commit | 8a4d77f990b4453e42e3c2cc61df5175b39586d3 (patch) | |
tree | e05eb01f0e986af23e5320d75d2b7ac111cab3ba | |
parent | 9042693e283f65d9afb4906ed693a862a250664b (diff) | |
download | libgit2-8a4d77f990b4453e42e3c2cc61df5175b39586d3.tar.gz |
path: don't let direach overwrite the callback's error message
This function deals with functions doing IO which means the amount of
errors that can happen is quit large. It does not help if it always
ovewrites the underlying error message with a less understandable
version of "something went wrong".
Instead, only use this generic message if there was no error set by the
callback.
-rw-r--r-- | src/path.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/path.c b/src/path.c index df6762c3a..81b4d51df 100644 --- a/src/path.c +++ b/src/path.c @@ -1060,11 +1060,13 @@ int git_path_direach( if ((error = git_buf_put(path, de_path, de_len)) < 0) break; + giterr_clear(); error = fn(arg, path); git_buf_truncate(path, wd_len); /* restore path */ - if (error != 0) { + /* Only set our own error if the callback did not set one already */ + if (error != 0 && !giterr_last()) { giterr_set_after_callback(error); break; } |