Message ID | 20200706080950.403087-2-armbru@redhat.com |
---|---|
State | New |
Headers | show |
Series | Less clumsy error checking | expand |
Markus Armbruster <armbru@redhat.com> writes: > Show errp instead of &err where &err is actually unusual. Add a > missing declaration. Add a second error pileup example. > > Signed-off-by: Markus Armbruster <armbru@redhat.com> > Reviewed-by: Eric Blake <eblake@redhat.com> > Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com> > Reviewed-by: Greg Kurz <groug@kaod.org> > --- > include/qapi/error.h | 19 +++++++++++++++---- > 1 file changed, 15 insertions(+), 4 deletions(-) > > diff --git a/include/qapi/error.h b/include/qapi/error.h > index ad5b6e896d..3e64324b7a 100644 > --- a/include/qapi/error.h > +++ b/include/qapi/error.h > @@ -16,15 +16,15 @@ > * Error reporting system loosely patterned after Glib's GError. > * > * Create an error: > - * error_setg(&err, "situation normal, all fouled up"); > + * error_setg(errp, "situation normal, all fouled up"); > * > * Create an error and add additional explanation: > - * error_setg(&err, "invalid quark"); > - * error_append_hint(&err, "Valid quarks are up, down, strange, " > + * error_setg(errp, "invalid quark"); > + * error_append_hint(errp, "Valid quarks are up, down, strange, " > * "charm, top, bottom.\n"); > * > * Do *not* contract this to > - * error_setg(&err, "invalid quark\n" > + * error_setg(errp, "invalid quark\n" // WRONG! > * "Valid quarks are up, down, strange, charm, top, bottom."); > * > * Report an error to the current monitor if we have one, else stderr: I intend to drop the change from &err to errp, and update the commit message accordingly. error_setg(&err, ...) is indeed unusual, and I cleaned up several unwise uses in PATCH 32+35+39. However, error_append_hint(errp, ...) is bad advice until Vladimir's ERRP_AUTO_PROPAGATE() makes it work. No need to get ahead of his work here. [...]
diff --git a/include/qapi/error.h b/include/qapi/error.h index ad5b6e896d..3e64324b7a 100644 --- a/include/qapi/error.h +++ b/include/qapi/error.h @@ -16,15 +16,15 @@ * Error reporting system loosely patterned after Glib's GError. * * Create an error: - * error_setg(&err, "situation normal, all fouled up"); + * error_setg(errp, "situation normal, all fouled up"); * * Create an error and add additional explanation: - * error_setg(&err, "invalid quark"); - * error_append_hint(&err, "Valid quarks are up, down, strange, " + * error_setg(errp, "invalid quark"); + * error_append_hint(errp, "Valid quarks are up, down, strange, " * "charm, top, bottom.\n"); * * Do *not* contract this to - * error_setg(&err, "invalid quark\n" + * error_setg(errp, "invalid quark\n" // WRONG! * "Valid quarks are up, down, strange, charm, top, bottom."); * * Report an error to the current monitor if we have one, else stderr: @@ -108,12 +108,23 @@ * } * * Do *not* "optimize" this to + * Error *err = NULL; * foo(arg, &err); * bar(arg, &err); // WRONG! * if (err) { * handle the error... * } * because this may pass a non-null err to bar(). + * + * Likewise, do *not* + * Error *err = NULL; + * if (cond1) { + * error_setg(&err, ...); + * } + * if (cond2) { + * error_setg(&err, ...); // WRONG! + * } + * because this may pass a non-null err to error_setg(). */ #ifndef ERROR_H