summaryrefslogtreecommitdiff
path: root/src/errors.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/errors.c')
-rw-r--r--src/errors.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/errors.c b/src/errors.c
index c9d9e4e37..70b5f2668 100644
--- a/src/errors.c
+++ b/src/errors.c
@@ -112,6 +112,29 @@ void giterr_clear(void)
#endif
}
+git_error_t giterr_detach(git_buf *message)
+{
+ git_error_t rval;
+ git_error *error = GIT_GLOBAL->last_error;
+
+ assert(message);
+
+ git_buf_free(message);
+
+ if (!error)
+ return GITERR_NONE;
+
+ rval = error->klass;
+
+ if (error != &g_git_oom_error)
+ git_buf_attach(message, error->message, 0);
+
+ error->message = NULL;
+ giterr_clear();
+
+ return rval;
+}
+
const git_error *giterr_last(void)
{
return GIT_GLOBAL->last_error;