davison@drivax.UUCP (Wayne Davison) (09/12/87)
[ You can feed this file directly to patch, if you like ]
I've found a couple more minor problems in world. The first showed up when
I was examining the various photographs when I got the message "Tomato" and
"Black Cat" instead of the appropriate photo descriptions. The cause is an
incorrect "+= 64" to the photograph's obimpr[ ] when the photo is produced.
Here's a context diff of the three instances:
*** verbs2.c.old Sat Sep 5 22:07:43 1987
--- verbs2.c Thu Sep 10 18:37:52 1987
***************
*** 737,743
else if (oextim >= 45) {
spk = 320;
obloc[OPHOTO] = loc;
- obimpr[OPHOTO] += 64;
oextim = 8192;
}
/* shot the pterodactyls */
--- 737,742 -----
else if (oextim >= 45) {
spk = 320;
obloc[OPHOTO] = loc;
oextim = 8192;
}
/* shot the pterodactyls */
***************
*** 785,791
else {
spk = 318;
obloc[FPHOTO] = loc;
- obimpr[FPHOTO] += 64;
}
} else if (loc == 100) {
if (obloc[APHOTO] != 0)
--- 784,789 -----
else {
spk = 318;
obloc[FPHOTO] = loc;
}
} else if (loc == 100) {
if (obloc[APHOTO] != 0)
***************
*** 793,799
else {
spk = 319;
obloc[APHOTO] = loc;
- obimpr[APHOTO] += 64;
}
} else
spk = 117;
--- 791,796 -----
else {
spk = 319;
obloc[APHOTO] = loc;
}
} else
spk = 117;
I have also tracked down an interesting problem in the Turbo C version that
did not show up in the Un*x version. It seemed that whenever morning would
arrive, I would get the "morning twilight" message, but NO room description
when I move. The problem is that the output array is ONE byte too short to
hold the maximum decoded output line. Turbo C apparently juggles the order
of the variables, and thus the overflow became apparent. Here's the fix:
*** variab.h.old Sat Sep 5 22:02:01 1987
--- variab.h Fri Sep 11 15:11:33 1987
***************
*** 12,16
EXTERN int wwflag, kmax, xindnt, slflag, more, nomor, rmove, chgact;
EXTERN int eastsc, cactsc, diesc, bonus, jackpo, lpill, pbstat, decset;
EXTERN int raset, dcombi, chaset, chaser, guardl;
! EXTERN char outst2[66];
EXTERN char inbuf[128];
--- 12,16 -----
EXTERN int wwflag, kmax, xindnt, slflag, more, nomor, rmove, chgact;
EXTERN int eastsc, cactsc, diesc, bonus, jackpo, lpill, pbstat, decset;
EXTERN int raset, dcombi, chaset, chaser, guardl;
! EXTERN char outst2[67];
EXTERN char inbuf[128];
Happy adventuring!
--
Wayne Davison ...amdahl!drivax!davison
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Ziol soft ol of egrt. Stz'l ltt oy ngx eqf rteohitk oz.
Oy ngx rg, hstqlt rkgh dt q fgzt zg stz dt afgv.