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