Date: Mon, 27 Oct 2008 22:45:32 +0100 From: Martin Tournoij <carpetsmoker@rwxrwxrwx.net> To: freebsd-questions@freebsd.org Subject: Re: reviving games/freebsd-games Message-ID: <20081027214532.GA84098@rwxrwxrwx.net> In-Reply-To: <ariht5xulu1.ln2@nntp.spotteswoode.dnsalias.org> References: <ariht5xulu1.ln2@nntp.spotteswoode.dnsalias.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Oct 27, 2008 at 08:53:46PM +0100, clemens fischer wrote: > Some of the programs in games/freebsd-games, notably hack and larn, have > the following problem: Given the declarations: > > char *scrollname[] = { char *potionname[] = { > "\0enchant armor", "\0sleep", > "\0enchant weapon", "\0healing", > ... ... > "\0 " "\0 " > }; }; > > (in larn/data.c) the code continues to flag the availability of some > scroll or potion by writing into the first byte of the strings in these > arrays: > > for (i=0; i<MAXSCROLL; i++) scrollname[i][0]=' '; > for (i=0; i<MAXPOTION; i++) potionname[i][0]=' '; > > This leads to SIGSEGV crashes. I think this came about with the gcc-4xx > series of our compiler, but I'm not really sure. I verified that > scrollname and potionname reside in the writable .data segment. The > segv is reproducable. Does anybody know what is wrong with this code? > I assume i could arrange for the flagging to be done in a separate data > structure, but since the programs worked for years this way, I think > there should be an easier way. > > -c The DragonflyBSD games have many improvements/bugfixes ... I already ported it some time ago, I just need to finish and wrap up ... I'll do it this weekend. -- Martin Tournoij carpetsmoker@rwxrwxrwx.net http://www.daemonforums.org QOTD: Q: Why was Stonehenge abandoned? A: It wasn't IBM compatible.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081027214532.GA84098>