On 07/27/2016 03:24 AM, Sascha Silbe wrote: > C11 allows errno to be clobbered by pretty much any library function > call, so in general callers need to take care to save errno before > calling other functions. > > However, for error reporting functions this is rather awkward and can > make the code on the caller side more complicated than > necessary. error_setg_errno() already takes care of preserving errno > and some functions rely on that, so just promise that we continue to > do so in the future. > > Signed-off-by: Sascha Silbe <si...@linux.vnet.ibm.com> > --- > > Alternative approach to "error: error_setg_errno(): errno may be > clobbered" [1].
I like this alternative better. > +++ b/include/qapi/error.h > @@ -170,6 +170,9 @@ void error_setg_internal(Error **errp, > * Just like error_setg(), with @os_error info added to the message. > * If @os_error is non-zero, ": " + strerror(os_error) is appended to > * the human-readable error message. > + * > + * The value of errno (which usually can get clobbered by almost any > + * function call) will be preserved. > */ > #define error_setg_errno(errp, os_error, fmt, ...) \ > error_setg_errno_internal((errp), __FILE__, __LINE__, __func__, \ Do we need/want to make the guarantee of preserving errno across any of the other functions and macros declared in error.h? -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature