When building Pigeonhole 2.2 for ARM, the following warnings are
produced:

  uri-mailto.c: In function '_parse_hex_value':
uri-mailto.c:139: warning: comparison is always false due to limited range of data type uri-mailto.c:145: warning: comparison is always false due to limited range of data type

The problem is a test assuming that char is a signed type :

static inline int _decode_hex_digit(char digit)
{
...

static bool _parse_hex_value(const char **in, char *out)
{
        char value;   // <<--- change to "int".

        if ( **in == '\0' || (value=_decode_hex_digit(**in)) < 0 )
                return FALSE;

        *out = value << 4;
        (*in)++;

        if ( **in == '\0' || (value=_decode_hex_digit(**in)) < 0 )
                return FALSE;


This is untested, but I changed the "char value" to "int value" to
correct the signed comparisons. There are no warnings when building
for x86 in either case, btw.

Also, the two tests for "**in == '\0'" seem to be unnecessary?



[/share/Public/XDove/dovecot-2.0-pigeonhole-0.2.2/src] # gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: ../gcc-4.2/configure --build=i386-pc-linux-gnu --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --prefix=/opt --disable-nls --disable-static --with-as=/home/slug/optware/cs08q1armel/toolchain/arm-2008q1/bin/arm-none-linux-gnueabi-as --with-ld=/home/slug/optware/cs08q1armel/toolchain/arm-2008q1/bin/arm-none-linux-gnueabi-ld --enable-languages=c,c++ --disable-multilib --enable-threads --disable-libmudflap --disable-libssp --disable-libgomp --disable-libstdcxx-pch --enable-shared --enable-symvers=gnu --enable-__cxa_atexit
Thread model: posix
gcc version 4.2.3
[/share/Public/XDove/dovecot-2.0-pigeonhole-0.2.2/src] # make
...
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I../../../../.. -I./.. -I./../../.. -I/share/Public/XDove/dovecot-2.0.9 -I/share/Public/XDove/dovecot-2.0.9/src/lib -I/share/Public/XDove/dovecot-2.0.9/src/lib-dict -I/share/Public/XDove/dovecot-2.0.9/src/lib-mail -I/share/Public/XDove/dovecot-2.0.9/src/lib-imap -I/share/Public/XDove/dovecot-2.0.9/src/lib-charset -I/share/Public/XDove/dovecot-2.0.9/src/lib-index -I/share/Public/XDove/dovecot-2.0.9/src/lib-storage -I/share/Public/XDove/dovecot-2.0.9/src/lib-storage/index -I/share/Public/XDove/dovecot-2.0.9/src/lib-storage/index/raw -std=gnu99 -g -O2 -Wall -W -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wchar-subscripts -Wformat=2 -Wbad-function-cast -Wstrict-aliasing=2 -MT ntfy-mailto.lo -MD -MP -MF .deps/ntfy-mailto.Tpo -c ntfy-mailto.c -fPIC -DPIC -o .libs/ntfy-mailto.o
uri-mailto.c: In function '_parse_hex_value':
uri-mailto.c:139: warning: comparison is always false due to limited range of data type uri-mailto.c:145: warning: comparison is always false due to limited range of data type

Reply via email to