[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] libxl: Fix incorrect return of OSEVENT_HOOK macro
Daniel De Graaf writes ("[PATCH v2] libxl: Fix incorrect return of OSEVENT_HOOK macro"): > Agreed, using the statement expression syntax seems cleaner here. ... > +#define OSEVENT_HOOK(hookname,...) ({ \ > + int rc; \ > + if (CTX->osevent_hooks) { \ > + CTX->osevent_in_hook++; \ > + rc = CTX->osevent_hooks->hookname(CTX->osevent_user, __VA_ARGS__); \ > + CTX->osevent_in_hook--; \ > + } else { \ > + rc = 0; \ > + } \ > + rc; \ > +}) Thanks. However, you need to use a different variable name to "rc". "rc" might theoretically be present int __VA_ARGS__ in which case this will go wrong. Also if we ever enable -Wshadow, this construction will cause a warning. I suggest int osevent_hook_rc; You could preserve the unification of the two macros by having #define OSEVENT_HOOK(hookname,...) \ OSEVENT_HOOK_INTERN(osevent_hook_rc =, /*empty*/, hookname, __VA_ARGS__) #define OSEVENT_HOOK_VOID(hookname,...) \ OSEVENT_HOOK_INTERN(/*empty*/, (void), hookname, __VA_ARGS__) or some such. I don't know whether you like that idea; if you do please go ahead and do it. If not then I'm happy to take the patch which duplicates the macro. Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |