The code about how to print the message, is foldered into a function, so if we want to change the print behavior in the future, just modify that function only.
Signed-off-by: Wenchao Xia <xiaw...@linux.vnet.ibm.com> --- qobject/qerror.c | 28 ++++++++++++++++------------ 1 files changed, 16 insertions(+), 12 deletions(-) diff --git a/qobject/qerror.c b/qobject/qerror.c index 685167a..86d1b07 100644 --- a/qobject/qerror.c +++ b/qobject/qerror.c @@ -79,6 +79,16 @@ static void qerror_print(QError *qerror) loc_pop(&qerror->loc); } +static void monitor_print_qerror(QError *qerror) +{ + if (monitor_cur_is_qmp()) { + QINCREF(qerror); + monitor_set_error(cur_mon, qerror); + } else { + qerror_print(qerror); + } +} + void qerror_report(ErrorClass eclass, const char *fmt, ...) { va_list va; @@ -88,12 +98,9 @@ void qerror_report(ErrorClass eclass, const char *fmt, ...) qerror = qerror_from_info(eclass, fmt, &va); va_end(va); - if (monitor_cur_is_qmp()) { - monitor_set_error(cur_mon, qerror); - } else { - qerror_print(qerror); - QDECREF(qerror); - } + monitor_print_qerror(qerror); + + QDECREF(qerror); } void qerror_report_err(Error *err) @@ -105,12 +112,9 @@ void qerror_report_err(Error *err) qerr->err_msg = g_strdup(err->msg); qerr->err_class = err->err_class; - if (monitor_cur_is_qmp()) { - monitor_set_error(cur_mon, qerr); - } else { - qerror_print(qerr); - QDECREF(qerr); - } + monitor_print_qerror(qerr); + + QDECREF(qerr); } void assert_no_error(Error *err) -- 1.7.1