Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: 4.1.1 doesn't compile



 > Oliver Kiddle writes:
 > Tomi Vainio - Sun Finland wrote:
 > > I also found another problem but this time only when I try to compile
 > > 32bit binary.
 > > 
 > > Compiler is Sun ONE Studio 8, Compiler Collection
 >           cc: Sun C 5.5 Patch 112760-01 2003/05/18 
 > > 
 > > cc -c -I. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -xO4  -o compat.o compat.c
 > > "compat.c", line 441: variable length array can not be declared with a static storage class: llbuf
 > > cc: acomp failed for compat.c
 > 
 > This I can't reproduce. The compiler I have is older than that.
 > 
 > The line in question is:
 >      static char llbuf[DIGBUFSIZE];
 > and system.h defines:
 >      #define DIGBUFSIZE ((int)(((sizeof(zlong) * 8) - 1) * 0.30103) + 3)
 > 
 > So quite why the compiler thinks it has a variable length array I
 > don't understand. Could you perhaps try substituting that in directly
 > and see if you can tweak it to work. The int cast might be causing the
 > problem in which case the * 0.30103 could perhaps be changed to * 30103
 > / 100000. But I don't understand what the calculation is doing. Anyone
 > else have any idea?
 > 
I found our bug report about this same thing.  There is a lot of talk
about C90 and C99 standards and how this should really work.

BugID 4800684 compiler treats a usual array as VLA
      4841119 zsh needs a minor fix to build with latest k2 compiler

Work Around
Use -xc99=%none options if C99 features are not required.

or

system.h line 421
- #define DIGBUFSIZE ((int)(((sizeof(zlong) * 8) - 1) * 0.30103) + 3)
+ #define DIGBUFSIZE ((int)(((sizeof(zlong) * 8) - 1) * 30103/100000) + 3)


  Tomppa



Messages sorted by: Reverse Date, Date, Thread, Author