reviving games/freebsd-games
clemens fischer
ino-news at spotteswoode.dnsalias.org
Mon Oct 27 12:55:00 PDT 2008
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
More information about the freebsd-questions
mailing list