avifil32: Removed sign comparison warning (sizeof expresions)

Michael Stefaniuc mstefani at redhat.com
Mon Aug 23 04:16:07 CDT 2010


Marko Nikolic wrote:
> sizeof expresion always return unsigned type, so it is casted
> when comparing with signed values.
This is ugly.

> ---
>  dlls/avifil32/wavfile.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/dlls/avifil32/wavfile.c b/dlls/avifil32/wavfile.c
> index fd6d9ec..3fc934c 100644
> --- a/dlls/avifil32/wavfile.c
> +++ b/dlls/avifil32/wavfile.c
> @@ -803,7 +803,7 @@ static HRESULT WINAPI IAVIStream_fnSetFormat(IAVIStream *iface, LONG pos,
>    TRACE("(%p,%d,%p,%d)\n", iface, pos, format, formatsize);
>  
>    /* check parameters */
> -  if (format == NULL || formatsize <= sizeof(PCMWAVEFORMAT))
> +  if (format == NULL || formatsize <= (LONG)sizeof(PCMWAVEFORMAT))
IMHO gcc is *wrong* in emitting a warning there. sizeof(PCMWAVEFORMAT)
is a compile time constant and gcc can see that sizeof(PCMWAVEFORMAT)
falls well inside the number range expressible by a LONG. Logically
there is no difference between
    formatsize <= sizeof(PCMWAVEFORMAT)
and
    formatsize <= 16
One gives a bogus warning and the other doesn't.

bye
	michael



More information about the wine-devel mailing list