On 12/05/2013 03:13 AM, Markus Armbruster wrote: >> >> For error_propagate, if the destination error is &error_abort, then >> the abort happens at propagation time. >> >> Signed-off-by: Peter Crosthwaite <peter.crosthwa...@xilinx.com> >> --- >> changed since v1: >> Delayed assertions that *errp == NULL. > > Care to explain why you want to delay these assertions? I'm not sure I > get it...
error_abort as a global variable is always NULL. > > [...] >> @@ -31,7 +33,6 @@ void error_set(Error **errp, ErrorClass err_class, const >> char *fmt, ...) >> if (errp == NULL) { >> return; >> } >> - assert(*errp == NULL); So *&error_abort is null and this assertion would fire, unless we delay the check for NULL... >> >> err = g_malloc0(sizeof(*err)); >> >> @@ -40,6 +41,12 @@ void error_set(Error **errp, ErrorClass err_class, const >> char *fmt, ...) >> va_end(ap); >> err->err_class = err_class; >> >> + if (errp == &error_abort) { >> + error_report("%s", error_get_pretty(err)); >> + abort(); >> + } >> + >> + assert(*errp == NULL); ...until after the check for &error_abort. -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature