]> granicus.if.org Git - nethack/commit
fix #H9082 - post-3.6.2 monster throwing crash
authorPatR <rankin@nethack.org>
Fri, 2 Aug 2019 17:42:26 +0000 (10:42 -0700)
committerPatR <rankin@nethack.org>
Fri, 2 Aug 2019 17:42:26 +0000 (10:42 -0700)
commit55e166ba08cbeab621055fa8bf80284289283c54
treed6d710ab65cff9345167827fd65504074f6c32fe
parent31c80383447ad3332f893724deff600efb648132
fix #H9082 - post-3.6.2 monster throwing crash

Changing
  if (ammo_and_launcher(otmp, uwep) && mwep->otyp == ELVEN_BOW)
(with 'uwep' typo) to
  if (mwep->otyp == ELVEN_BOW && ammo_and_launcher(otmp, mwep))
(with fixed 'mwep') moved ammo_and_launcher()'s hidden non-null
test to after 'mwep->otyp'.  If mwep was Null (so monster must be
throwing non-ammo such as darts or daggers rather than shooting
with a launcher), a crash occurred.  (Throwing such things while
the monster is wielding any weapon doesn't have this problem.)

I don't think 3.6.2 can crash here.  If hero's uwep is a bow, otmp
must be arrows to get past pre-3.6.3's incorrect ammo_and_launcher()
check.  And a monster won't shoot arrows unless wielding a bow, so
monster's mwep would be non-Null regardless of what uwep is.

I tested a kobold with darts and an elven bow.  But I also gave it
one elven arrow to provoke it into wielding the bow and my test
didn't throw darts with nothing wielded....
doc/fixes36.3
src/mthrowu.c