[net.games.hack] Bug dealing with punishment

ruff@cisden.UUCP (Craig Ruff) (12/18/85)

One of our valiant hackers unconvered this bug.  If you are punished
and climb the stairs while levetated, the ball and chain are lost to
limbo.  That is ok until you try to move, when the second bug is flushed
in freeobj trying to free an object not on the list for machines that
do not like null pointers.

*** hack.do.c.orig	Tue Dec 17 21:09:51 1985
--- hack.do.c	Tue Dec 17 21:10:28 1985
***************
*** 181,188
  		    u.ux = xupstair;	/* this will confuse the player! */
  		    u.uy = yupstair;
  		}
! 		if(Punished && !Levitation){
! 			pline("With great effort you climb the stairs.");
  			placebc(1);
  		}
  	    } else {

--- 181,189 -----
  		    u.ux = xupstair;	/* this will confuse the player! */
  		    u.uy = yupstair;
  		}
! 		if(Punished){
! 			if (!Levitation)
! 				pline("With great effort you climb the stairs.");
  			placebc(1);
  		}
  	    } else {

*** hack.invent.c.orig	Wed Jul 24 16:53:39 1985
--- hack.invent.c	Wed Dec 18 10:44:43 1985
***************
*** 132,139
  
  	if(obj == fobj) fobj = fobj->nobj;
  	else {
! 		for(otmp = fobj; otmp->nobj != obj; otmp = otmp->nobj)
! 			if(!otmp) panic("error in freeobj");
  		otmp->nobj = obj->nobj;
  	}
  }

--- 132,141 -----
  
  	if(obj == fobj) fobj = fobj->nobj;
  	else {
! 		for(otmp = fobj; otmp && otmp->nobj != obj; otmp = otmp->nobj)
! 		;
! 		if (!otmp)
! 			panic("error in freeobj");
  		otmp->nobj = obj->nobj;
  	}
  }