]> granicus.if.org Git - nethack/commit
fix #H7015 - explosion chain reaction bug
authorPatR <rankin@nethack.org>
Sat, 31 Mar 2018 00:05:23 +0000 (17:05 -0700)
committerPatR <rankin@nethack.org>
Sat, 31 Mar 2018 00:05:23 +0000 (17:05 -0700)
commitc05882699527c1a1170b4d729573853c09e75081
tree3c6997393c97d3c2e0031d1260b3749a2f29efcc
parent4eab7b140cee1ac3f50a555f021e0ca8c36c06af
fix #H7015 - explosion chain reaction bug

The fix to prevent "crushed by a gas spore's explosion" set killer.name
to an empty string after a gas spore explosion finished, but that made
nested explosions end up with empty killer.name after the innermost
call completed.  explode() shouldn't have been hanging on to a pointer
to a global value that is subject to change while it executes.  Making
a local copy of the current value at the time explode() is called will
solve that (I hope...).

Simply reverting the reset of killer.name wouldn't have been correct.
The innermost explosion would still be clobbering killer.name for any
outer MON_EXPLODE explosions in progress.  When the only exploding
monster is gas spore, that wouldn't be noticeable.  But having other
types of exploding monsters and a chain reaction which affected more
than one type would have exposed that bug.  I think this fixes both
aspects of this problem but don't have a second type of exploding
monster to verify the second part.
doc/fixes36.1
src/explode.c