Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!uunet!seismo!ll-xn!cit-vax!tybalt.caltech.edu!ssnyder From: ssnyder@tybalt.caltech.edu (Scott S. Snyder) Newsgroups: comp.sources.bugs Subject: another nethack bug (& fix) Message-ID: <3706@cit-vax.Caltech.Edu> Date: Fri, 21-Aug-87 08:02:33 EDT Article-I.D.: cit-vax.3706 Posted: Fri Aug 21 08:02:33 1987 Date-Received: Sun, 23-Aug-87 00:43:12 EDT Sender: news@cit-vax.Caltech.Edu Reply-To: ssnyder@tybalt.caltech.edu.UUCP (Scott S. Snyder) Distribution: world Organization: California Institute of Technology Lines: 36 If the graphics symbols for VWALL or HWALL are set to characters with the high bit set (as might happen on a mess-dos machine), zapping with a ray-type wand or spell causes a slew of "At gets null" errors. The problem is that these characters are being passed to a routine (Tmp_at) which compares them with zero (values <=0 signal special functions). A fix is to change Tmp_at (and tmp_at while we're at it) to accept ints instead of chars as arguments and to convince buzz() to pass unsigned chars to Tmp_at: In prisym.c, change the declaration of tmp_at on line 41 from tmp_at(x,y) schar x,y; { to tmp_at(x,y) int x,y; { and change the declaration of Tmp_at on line 69 from Tmp_at(x,y) schar x,y; { to Tmp_at(x,y) int x,y; { and in zap.c, change the declaration of dirlet on lines 675 and 676 from char dirlet(dx,dy) register dx,dy; { to uchar dirlet(dx,dy) register dx,dy; {