[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] util: Fix MIN_NON_ZERO
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH] util: Fix MIN_NON_ZERO |
Date: |
Thu, 14 Jul 2016 13:17:44 +0100 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Tue, Jul 12, 2016 at 02:48:33PM +0800, Fam Zheng wrote:
> MIN_NON_ZERO(0, 1) is evaluated to 0. Rewrite the macro to fix it.
This is incorrect. The actual results are:
MIN_NON_ZERO(0, 1) = 1
MIN_NON_ZERO(1, 0) = 0
The second case is the buggy one.
>
> Reported-by: Miroslav Rezanina <address@hidden>
> Signed-off-by: Fam Zheng <address@hidden>
> ---
> include/qemu/osdep.h | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
> index e63da28..e4c6ae6 100644
> --- a/include/qemu/osdep.h
> +++ b/include/qemu/osdep.h
> @@ -151,7 +151,8 @@ extern int daemon(int, int);
> /* Minimum function that returns zero only iff both values are zero.
> * Intended for use with unsigned values only. */
> #ifndef MIN_NON_ZERO
> -#define MIN_NON_ZERO(a, b) (((a) != 0 && (a) < (b)) ? (a) : (b))
> +#define MIN_NON_ZERO(a, b) ((a) == 0 ? (b) : \
> + ((b) == 0 ? (a) : (MIN(a, b))))
> #endif
>
> /* Round number down to multiple */
> --
> 2.7.4
>
signature.asc
Description: PGP signature