Path: utzoo!mnetor!uunet!husc6!bloom-beacon!tut.cis.ohio-state.edu!rutgers!elbereth.rutgers.edu!bartz From: bartz@elbereth.rutgers.edu (Bartz) Newsgroups: comp.sys.amiga Subject: Bug in Manx 3.6a Message-ID: Date: 20 Apr 88 13:58:08 GMT Organization: Rutgers Univ., New Brunswick, N.J. Lines: 47 Keywords: Error in array size declarations. I resently found what I believe to be a bug in Manx C 3.6a. The following example program illustrates the problem. typedef struct test_type { int v1,v2,v3; } test_type; test_type atest[66][198]; This program simply defines a struct type which is 6 bytes in length, and then declares a large array of this type. The resulting memory block should be 6 x 66 x 198 bytes long (or 78408 bytes). The example is then compiled with the far code/far data switchs, as well as the switches to not run the assembler and comment the assembly code with C statements (ie. cc +C +D -A -T -o test.asm test.c). The resulting test.asm file is: ;:ts=8 far code far data ;typedef struct test_type ;{ ; int v1,v2,v3; ;} test_type; ; ;test_type atest[66][198]; global _atest,12872 <------- Note the size in bytes...... public .begin dseg end The size of the memory block is 78408 truncated to 16 bits (ie. 12872). This seems to be a bug. Even correcting the problem in the assembly code (in my real program, note the example) dosen't seem to work right since although the array APPEARS!!!! to be the proper size, strange errors occur, in different places every time I compile the exact same program. Ed Bartz -- ARPA: Bartz@ruthep.rutgers.edu UUCP: bartz@elbereth.uucp BITNET: bartz@ruthep.bitnet