Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2013-11-05 17:56:10 +0400
committerVicent Marti <tanoku@gmail.com>2013-11-05 17:56:10 +0400
commit1eab9f0e32178a9aac941583c69e1b9cf9849f77 (patch)
tree7d1648b25f154516680397b4fb3941e50ef2c3b7 /src
parent3b259cbd1afdc96a3c3eb7af5895b310c1ac2a7d (diff)
error: Simplify giterr_detach
Diffstat (limited to 'src')
-rw-r--r--src/errors.c17
-rw-r--r--src/iterator.c11
2 files changed, 12 insertions, 16 deletions
diff --git a/src/errors.c b/src/errors.c
index 70b5f2668..d04da4ca9 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -112,27 +112,22 @@ void giterr_clear(void)
#endif
}
-git_error_t giterr_detach(git_buf *message)
+int giterr_detach(git_error *cpy)
{
- git_error_t rval;
git_error *error = GIT_GLOBAL->last_error;
- assert(message);
-
- git_buf_free(message);
+ assert(cpy);
if (!error)
- return GITERR_NONE;
-
- rval = error->klass;
+ return -1;
- if (error != &g_git_oom_error)
- git_buf_attach(message, error->message, 0);
+ cpy->message = error->message;
+ cpy->klass = error->klass;
error->message = NULL;
giterr_clear();
- return rval;
+ return 0;
}
const git_error *giterr_last(void)
diff --git a/src/iterator.c b/src/iterator.c
index 369a079bc..8646399ab 100644
--- a/src/iterator.c
+++ b/src/iterator.c
@@ -991,8 +991,9 @@ static int fs_iterator__expand_dir(fs_iterator *fi)
fi->base.start, fi->base.end, &ff->entries);
if (error < 0) {
- git_buf msg = GIT_BUF_INIT;
- git_error_t errt = giterr_detach(&msg);
+ git_error last_error = {0};
+
+ giterr_detach(&last_error);
/* these callbacks may clear the error message */
fs_iterator__free_frame(ff);
@@ -1000,9 +1001,9 @@ static int fs_iterator__expand_dir(fs_iterator *fi)
/* next time return value we skipped to */
fi->base.flags &= ~GIT_ITERATOR_FIRST_ACCESS;
- if (msg.ptr) {
- giterr_set_str(errt, msg.ptr);
- git_buf_free(&msg);
+ if (last_error.message) {
+ giterr_set_str(last_error.klass, last_error.message);
+ free(last_error.message);
}
return error;