On Tue, 28 Aug 2007, Dominik Vogt wrote:

On Tue, Aug 28, 2007 at 02:55:26PM +0100, seventh guardian wrote:
On 8/28/07, seventh guardian <[EMAIL PROTECTED]> wrote:
On 8/28/07, Dominik Vogt <[EMAIL PROTECTED]> wrote:
On Tue, Aug 28, 2007 at 02:13:20PM +0100, seventh guardian wrote:
On 8/28/07, seventh guardian <[EMAIL PROTECTED]> wrote:
OOPS:

$ make CFLAGS="-g -O2 -Wall -Wpointer-arith -fno-strict-aliasing -Werror"

make  all-recursive
make[1]: Entering directory `/home/renato/apps/cvs/fvwm'
Making all in libs
make[2]: Entering directory `/home/renato/apps/cvs/fvwm/libs'
Flocale.c:1464: warning: comparison with string literal results in unspecified b
ehaviour

I'm not sure of how severe this warning is.. Is it a show-stopper?

It is a show-stopper. There were some nasty char* == "foo bar" tests.
Jeez.. I'll fix them.

I think the idea is that for every string literal there is only
one actual instance in the executable, so the code is safe.  But
instead of using macros we should rather have

  Flocale.c
  ---------
  static const char *fft_fallback_font = FLOCALE_FFT_FALLBACK_FONT;

  ...

  if (fn != fft_fallback_font)
  ...

Makes sense. I was using strcasecmp, but that should be faster.

Hum but now gcc complains about the const char * vs. char *:

(...)
cc1: warnings being treated as errors
Flocale.c: In function 'FlocaleGetFftFont':
Flocale.c:1079: warning: assignment discards qualifiers from pointer target type

I guess we have to remove the "const" then.  That's better than
casting it away every time.

There are so many places in the code where one would want to use const strings, but it's not possible because there are other functions which don't use const.

It would be a good thing to add some const where possible in order to make it possible to wrtie new code using const specifiers. Having correctly specifired const where functiond don't change on the input is a good thing for code readablity. I'm not sure exactly where the deadend is for changing stuff to const, but I believe it's somewhere in the parsing functions.

But right now removing the const is best.

/Viktor

Reply via email to