On 10/16/2014 01:54 AM, Peter Lieven wrote: > at least in block layer we have the case of limits being defined for a > BlockDriverState. However, in this context often zero (0) has the special > meanining of undefined which means no limit. If two of those limits are > combined and the minimum is needed the minimum function should only return > zero if both parameters are zero. > > Signed-off-by: Peter Lieven <p...@kamp.de> > --- > include/qemu/osdep.h | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h > index 1565404..9a238df 100644 > --- a/include/qemu/osdep.h > +++ b/include/qemu/osdep.h > @@ -68,6 +68,10 @@ typedef signed int int_fast16_t; > #define MAX(a, b) (((a) > (b)) ? (a) : (b)) > #endif > > +#ifndef MIN_NON_ZERO > +#define MIN_NON_ZERO(a, b) ((!!(a) && (a) < (b)) ? (a) : (b))
'(a) && expr' is already forcing the evaluation of (a) as a boolean; thus rendering the '!!(a)' conversion to boolean redundant. The patch is correct as is, so I'll leave a positive review, but if you have a reason to respin, making it two characters shorter is probably worth it. Maybe it's also worth a comment that this macro is only designed to work on unsigned values. Reviewed-by: Eric Blake <ebl...@redhat.com> -- Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature