summaryrefslogtreecommitdiff
path: root/src/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/errors.c')
-rw-r--r--src/errors.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/errors.c b/src/errors.c
index e2629f69e..d04da4ca9 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -112,8 +112,25 @@ void giterr_clear(void)
#endif
}
+int giterr_detach(git_error *cpy)
+{
+ git_error *error = GIT_GLOBAL->last_error;
+
+ assert(cpy);
+
+ if (!error)
+ return -1;
+
+ cpy->message = error->message;
+ cpy->klass = error->klass;
+
+ error->message = NULL;
+ giterr_clear();
+
+ return 0;
+}
+
const git_error *giterr_last(void)
{
return GIT_GLOBAL->last_error;
}
-