[comp.sources.bugs] World bugfixes

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.