[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer
From: |
Luiz Capitulino |
Subject: |
Re: [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer |
Date: |
Thu, 2 Aug 2012 10:44:45 -0300 |
On Thu, 02 Aug 2012 13:23:58 +0200
Markus Armbruster <address@hidden> wrote:
> Luiz Capitulino <address@hidden> writes:
>
> > Helps dropping/modifying qerror functions.
> >
> > Signed-off-by: Luiz Capitulino <address@hidden>
> > ---
> > qerror.c | 24 ++++++++++++------------
> > 1 file changed, 12 insertions(+), 12 deletions(-)
> >
> > diff --git a/qerror.c b/qerror.c
> > index 5efccec..59025ea 100644
> > --- a/qerror.c
> > +++ b/qerror.c
> > @@ -346,10 +346,10 @@ static QError *qerror_new(void)
> > return qerr;
> > }
> >
> > -static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError *qerr,
> > - const char *fmt, va_list
> > *va)
> > +static QDict *error_obj_from_fmt_no_fail(const char *fmt, va_list *va)
>
> Elsewhere, we use FOO_nofail() for a variant of FOO() that must not
> fail.
>
> Call this function just error_obj_from_fmt()?
>
> Or if you think the name must convey it can't fail:
> error_obj_from_fmt_nofail()?
It's worth it, this function is dropped later on.
>
> > {
> > QObject *obj;
> > + QDict *ret;
> >
> > obj = qobject_from_jsonv(fmt, va);
> > if (!obj) {
> > @@ -361,9 +361,8 @@ static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError
> > *qerr,
> > abort();
> > }
> >
> > - qerr->error = qobject_to_qdict(obj);
> > -
> > - obj = qdict_get(qerr->error, "class");
> > + ret = qobject_to_qdict(obj);
> > + obj = qdict_get(ret, "class");
> > if (!obj) {
> > fprintf(stderr, "missing 'class' key in '%s'\n", fmt);
> > abort();
> > @@ -372,8 +371,8 @@ static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError
> > *qerr,
> > fprintf(stderr, "'class' key value should be a string in '%s'\n",
> > fmt);
> > abort();
> > }
> > -
> > - obj = qdict_get(qerr->error, "data");
> > +
> > + obj = qdict_get(ret, "data");
> > if (!obj) {
> > fprintf(stderr, "missing 'data' key in '%s'\n", fmt);
> > abort();
> > @@ -382,9 +381,11 @@ static void GCC_FMT_ATTR(2, 0) qerror_set_data(QError
> > *qerr,
> > fprintf(stderr, "'data' key value should be a dict in '%s'\n",
> > fmt);
> > abort();
> > }
> > +
> > + return ret;
> > }
> >
> > -static void qerror_set_desc(QError *qerr, const char *fmt)
> > +static const QErrorStringTable *get_desc_no_fail(const char *fmt)
>
> Likewise.
>
> > {
> > int i;
> >
> > @@ -392,8 +393,7 @@ static void qerror_set_desc(QError *qerr, const char
> > *fmt)
> >
> > for (i = 0; qerror_table[i].error_fmt; i++) {
> > if (strcmp(qerror_table[i].error_fmt, fmt) == 0) {
> > - qerr->entry = &qerror_table[i];
> > - return;
> > + return &qerror_table[i];
> > }
> > }
> >
> > @@ -426,8 +426,8 @@ static QError *qerror_from_info(const char *file, int
> > linenr, const char *func,
> > qerr->file = file;
> > qerr->func = func;
> >
> > - qerror_set_data(qerr, fmt, va);
> > - qerror_set_desc(qerr, fmt);
> > + qerr->error = error_obj_from_fmt_no_fail(fmt, va);
> > + qerr->entry = get_desc_no_fail(fmt);
> >
> > return qerr;
> > }
>
> Turns side effects on qerr into a nice clean return values. Good!
>
- [Qemu-devel] [PATCH v1 00/34]: add new error format, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 01/34] monitor: drop unused monitor debug code, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 02/34] qerror: QERR_AMBIGUOUS_PATH: drop %(object) from human msg, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 03/34] qerror: QERR_DEVICE_ENCRYPTED: add filename info to human msg, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 04/34] qerror: reduce public exposure, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 06/34] qerror: avoid passing qerr pointer, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 05/34] qerror: drop qerror_abort(), Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 08/34] qerror: qerror_format(): return an allocated string, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 07/34] qerror: QError: drop file, linenr, func, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 10/34] error: don't delay error message construction, Luiz Capitulino, 2012/08/01
- [Qemu-devel] [PATCH 12/34] hmp: hmp_cont(): don't rely on QERR_DEVICE_ENCRYPTED, Luiz Capitulino, 2012/08/01