From 79020cfcbb78a85768174bb93ee3b7cfc6ffa353 Mon Sep 17 00:00:00 2001 From: Luiz Capitulino Date: Mon, 5 Dec 2011 16:04:05 -0200 Subject: [PATCH] Error: Introduce error_copy() Signed-off-by: Luiz Capitulino --- error.c | 13 +++++++++++++ error.h | 5 +++++ 2 files changed, 18 insertions(+) diff --git a/error.c b/error.c index 990050f792..d3455ab9e6 100644 --- a/error.c +++ b/error.c @@ -43,6 +43,19 @@ void error_set(Error **errp, const char *fmt, ...) *errp = err; } +Error *error_copy(const Error *err) +{ + Error *err_new; + + err_new = g_malloc0(sizeof(*err)); + err_new->msg = g_strdup(err->msg); + err_new->fmt = err->fmt; + err_new->obj = err->obj; + QINCREF(err_new->obj); + + return err_new; +} + bool error_is_set(Error **errp) { return (errp && *errp); diff --git a/error.h b/error.h index 6361f407fd..45ff6c1ffe 100644 --- a/error.h +++ b/error.h @@ -34,6 +34,11 @@ void error_set(Error **err, const char *fmt, ...) GCC_FMT_ATTR(2, 3); */ bool error_is_set(Error **err); +/** + * Returns an exact copy of the error passed as an argument. + */ +Error *error_copy(const Error *err); + /** * Get a human readable representation of an error object. */ -- 2.30.2