Skip to content

Commit

Permalink
error: don't delay error message construction
Browse files Browse the repository at this point in the history
Today, the error message is only constructed when it's used. This commit
changes that to construct the error message when the error object is
built (ie. when the error is reported).

This simplifies the Error object.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
  • Loading branch information
Luiz Capitulino committed Aug 13, 2012
1 parent 18da7c0 commit dd7520f
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 10 deletions.
8 changes: 1 addition & 7 deletions error.c
Expand Up @@ -20,7 +20,6 @@
struct Error
{
QDict *obj;
const char *fmt;
char *msg;
};

Expand All @@ -39,7 +38,7 @@ void error_set(Error **errp, const char *fmt, ...)
va_start(ap, fmt);
err->obj = qobject_to_qdict(qobject_from_jsonv(fmt, &ap));
va_end(ap);
err->fmt = fmt;
err->msg = qerror_format(fmt, err->obj);

*errp = err;
}
Expand All @@ -50,7 +49,6 @@ Error *error_copy(const Error *err)

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);

Expand All @@ -64,10 +62,6 @@ bool error_is_set(Error **errp)

const char *error_get_pretty(Error *err)
{
if (err->msg == NULL) {
err->msg = qerror_format(err->fmt, err->obj);
}

return err->msg;
}

Expand Down
4 changes: 1 addition & 3 deletions qerror.c
Expand Up @@ -543,7 +543,6 @@ void qerror_report(const char *fmt, ...)
struct Error
{
QDict *obj;
const char *fmt;
char *msg;
};

Expand All @@ -555,8 +554,7 @@ void qerror_report_err(Error *err)
loc_save(&qerr->loc);
QINCREF(err->obj);
qerr->error = err->obj;

qerr->err_msg = qerror_format(err->fmt, qerr->error);
qerr->err_msg = g_strdup(err->msg);

if (monitor_cur_is_qmp()) {
monitor_set_error(cur_mon, qerr);
Expand Down

0 comments on commit dd7520f

Please sign in to comment.