🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.os.msdos.programmer
Article #4794

Re: QuickC compiler bug with 2D array?

#4794
From: Arnie Unger
Date: Tue, 19 Feb 1991 23:04
42 lines
2437 bytes
bmyers@garnet.berkeley.edu (Brian Myers) writes:

>The following code was excerpted from a longer program for constructing
>crossword puzzles.  This short program does not work because each
>assignment statement seems inexplicably to assign a value to *two*
>different array elements at the same time.  I observed this double
>action with the "Watch Value" feature on the Debug menu.


>typedef struct puzzlecell {         /* defines one cell in a 15x15 */
>	char letter;                    /* crossword puzzle grid */
>	int number;
>} CELL;

>CELL grid[14][14];                  /* crossword puzzle grid 15x15 */
/*********************************************************************
Your problem is right here, and it is an easy one.  If you allocate
a 14 X 14 grid, you only get valid addresses of 0 to 13 (an easy error
to make)  Try allocating it as 15 X 15 and you can use grid[10][14].letter
with no error.  By poking into grid[10][14], you were probably in the
memory location for grid[11][0], or so...
**********************************************************************/

>void main (void)
>{
>    /* each line _should_ write a Z in one square of the grid. */
>    /* each line _does_ write a Z in _two_ squares. */

>    grid[4][0].letter = 'Z';        /* also puts 'Z' at grid[3][14].letter */
>    grid[10][14].letter = 'Z';      /* also puts 'Z' at grid[11][0].letter */
>}

>/* A similar problem occurs whenever the second index is 0 or 14. */
>/* When the second index is > 0 and < 14, no problems occur. */
>---------------------------------------------------------------------------
>Brian Myers					 bmyers@garnet.berkeley.edu

Note the change with the declaration of grid as 15 X 15 vice 14 X 14.  You
were one address short.  With 15 X 15, your valid addresses are 0 to 14.

Arnie Unger (acunger%netmbx@tmpmbx.UUCP) Berlin, Germany
--- Seen on a F-111 bomb: TO ANY IRAQI SERVICEMEMBER!
Technical Details
Message-ID: <1989@netmbx.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!unido!opal!tmpmbx!netmbx!acunger
References: <1991Feb19.062220.26093@agate.berkeley.edu>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!uunet!mcsun!unido!opal!tmpmbx!netmbx!acunger
From: acunger@netmbx.UUCP (Arnie Unger)
Newsgroups: comp.os.msdos.programmer
Subject: Re: QuickC compiler bug with 2D array?
Message-ID: <1989@netmbx.UUCP>
Date: 19 Feb 91 23:04:41 GMT
References: <1991Feb19.062220.26093@agate.berkeley.edu>
Distribution: comp.os.msdos.programmer; alt.msdos.programmer; comp.lang.c
Organization: netmbx, Berlin, West Germany
Lines: 42