Hi, On Sun, Oct 03, 2010 at 01:27:10PM +0200, Bruno Haible wrote: > Dmitry V. Levin wrote: > > * lib/mbsstr.c (knuth_morris_pratt_multibyte): Assign a raw memory > > pointer returned by nmalloca() right to the variable of type > > "mbchar_t *" thus removing redundant proxy variable of type "char *". > > Thanks for the patch, but I don't feel that it is an improvement over the > existing code: it makes the code harder to understand. > I allocate a variable 'memory' that contains both 'needle_mbchars' and > 'table'. When I call free(memory), it is clear that both are freed. > Whereas in your rewrite, 'table' becomes an backpack on 'needle_mbchars', > and when you write free(needle_mbchars), one keeps wondering why there > is no free(table). > > > mbsstr.c:50: error: cast increases required alignment of target type > > [-Wcast-align] > > How is one supposed to write address computations needed for dissecting > a memory block into several memory blocks, when this warning is enabled? > With 'void *' I cannot do address arithmetic. With 'char *' I get these > warnings. 'uintptr_t'? Berk, no. > > In summary, please turn off -Werror when compiling gnulib code. We don't > guarantee the absence of warnings.
The project where -Werror is enabled by default is GNU grep. If the statement that gnulib code may emit -Wcast-align warnings is correct, then I suggest to remove either -Wcast-align or $(WERROR_CFLAGS) when compiling gnulib in grep. -- ldv
pgpDHYGpMfnpc.pgp
Description: PGP signature
