paula@bcsaic.UUCP (Paul Allen) (06/07/90)
Wow! Minix has finally arrived! We've now got ADVENTURE! I haven't compiled it under Minix yet, but I've run across a couple bugs while using it as a 'benchmark' on my Sun. :-) First, as Chris van Wuellen has pointed out, there are three calls to tolower() that assume the argument is upper case. On my Sun, this got a segmentation violation immediatly after telling it I didn't need instructions. The fix is obvious. Second, I got a segmentation violation any time I gave the command "y2". (Since this is the only way I know to get out of the rock pile, this is a serious problem!) Using dbx, I discovered that "y2" is at the end of the wc[] array and some code in database.c was trying to reference the array element after "y2". Here's my diff: *** database.c.original Wed Jun 6 17:45:59 1990 --- database.c Wed Jun 6 17:48:41 1990 *************** *** 165,173 **** int v1, v2; if ((v1 = binary(word, wc, MAXWC)) >= 0) { ! if (strcmp(word, wc[v1 - 1].aword) == 0) v2 = v1 - 1; ! else if (strcmp(word, wc[v1 + 1].aword) == 0) v2 = v1 + 1; else v2 = v1; --- 165,173 ---- int v1, v2; if ((v1 = binary(word, wc, MAXWC)) >= 0) { ! if (v1 > 0 && strcmp(word, wc[v1 - 1].aword) == 0) v2 = v1 - 1; ! else if (v1 < (MAXWC-1) && strcmp(word, wc[v1 + 1].aword) == 0) v2 = v1 + 1; else v2 = v1; This is a pretty simple-minded fix, but it appears to do the trick and doesn't cause any other strange effects that I can see. Note that MAXWC is equal to the largest legal subscript in wc[] plus one. I have yet to encounter the other bug in database.c that Christoph reported. I suppose it'll be obvious when I go looking for it. Now, where's my map of the Pirate's maze? (Har, Har!) Paul Allen -- ------------------------------------------------------------------------ Paul L. Allen | pallen@atc.boeing.com Boeing Advanced Technology Center | ...!uw-beaver!bcsaic!pallen