simon@its63b.ed.ac.uk (ECSC68 S Brown CS) (03/19/87)
Well, here's another null-pointer bug in the rogue that was posted recently
in comp.sources.unix. (Actually, it was a *REAL* bug - if the first monster
on the level was a mimic, it remained mimicking (sp?) even though it should
be identified; this patch fixes that too).
The symptom of the bug was that if you read a scroll of aggregate monsters
on a machine which memory-faults on a null-pointer dereference, the game
core-dumps.
Here's a context diff:
(Yes, I *know* it should be in comp.source.bugs, but I can't post there!)
*** monster.c.orig Thu Mar 19 16:41:15 1987
--- monster.c Thu Mar 19 16:41:08 1987
***************
*** 790,796
while (monster) {
wake_up(monster);
monster->m_flags &= (~IMITATES);
- monster = monster->next_monster;
if (rogue_can_see(monster->row, monster->col)) {
mvaddch(monster->row, monster->col, monster->m_char);
}
--- 790,795 -----
while (monster) {
wake_up(monster);
monster->m_flags &= (~IMITATES);
if (rogue_can_see(monster->row, monster->col)) {
mvaddch(monster->row, monster->col, monster->m_char);
}
***************
*** 794,799
if (rogue_can_see(monster->row, monster->col)) {
mvaddch(monster->row, monster->col, monster->m_char);
}
}
}
--- 793,799 -----
if (rogue_can_see(monster->row, monster->col)) {
mvaddch(monster->row, monster->col, monster->m_char);
}
+ monster = monster->next_monster;
}
}
--
----------------------------------
| Simon Brown | UUCP: seismo!mcvax!ukc!{its63b,cstvax}!simon
| Department of Computer Science | JANET: simon@uk.ac.ed.{its63b,cstvax}
| University of Edinburgh, | ARPA: simon%{its63b,cstvax}.ed.ac.uk\
| Scotland, UK. | @cs.ucl.ac.uk
---------------------------------- "Life's like that, you know"