qemu-trivial
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-trivial] [PATCH] savevm: fix compiler warning


From: Stefan Hajnoczi
Subject: Re: [Qemu-trivial] [PATCH] savevm: fix compiler warning
Date: Wed, 15 Aug 2012 14:30:02 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

On Tue, Aug 14, 2012 at 11:18:32PM +0300, Alberto Garcia wrote:
> If we have a 32-bit long then the truncation of a 64-bit value will
> produce a compiler warning unless we make an explicit cast.
> ---
>  savevm.c |    2 +-
>  1 ficheiro modificado, 1 adição(+), 1 eliminado(-)
> 
> diff --git a/savevm.c b/savevm.c
> index 0ea10c9..c89fc4e 100644
> --- a/savevm.c
> +++ b/savevm.c
> @@ -2473,7 +2473,7 @@ int xbzrle_encode_buffer(uint8_t *old_buf, uint8_t 
> *new_buf, int slen,
>          /* word at a time for speed, use of 32-bit long okay */
>          if (!res) {
>              /* truncation to 32-bit long okay */
> -            long mask = 0x0101010101010101ULL;
> +            long mask = (long) 0x0101010101010101ULL;

C99 6.3.1.3 Signed and unsigned integers, paragraph 3:

"Otherwise, the new type is signed and the value cannot be represented
in it; either the result is implementation-defined or an
implementation-defined signal is raised."

The safe way of doing this is by casting to (unsigned long) instead:

"Otherwise, if the new type is unsigned, the value is converted by
repeatedly adding or subtracting one more than the maximum value that
can be represented in the new type until the value is in the range of
the new type."

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]