From 346ebbce10854ba70e28778ac4852936a68e5967 Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Sun, 13 Oct 2019 20:40:54 +0300 Subject: [PATCH] Fix launched object accessing a deleted trap In launch_obj, the code first got the trap, then called ohitmon (which can delete the trap by doing mondied -> fill_pit -> flooreffects -> deltrap), then after that used the trap variable. --- doc/fixes36.3 | 1 + src/trap.c | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index e87280bdd..94af43996 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -183,6 +183,7 @@ fix vault guard impossible when he could not relocate in certain situation fix temple priests or shopkeepers moving over other monsters fix hero still hiding under a statue shattered by a land mine fix helping a monster out of a pit addressing a deleted trap +fix launched rolling boulder code accessing deleted trap Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/trap.c b/src/trap.c index 8d0dddb6a..6b9884ea6 100644 --- a/src/trap.c +++ b/src/trap.c @@ -1840,7 +1840,6 @@ int style; bhitpos.x += dx; bhitpos.y += dy; - t = t_at(bhitpos.x, bhitpos.y); if ((mtmp = m_at(bhitpos.x, bhitpos.y)) != 0) { if (otyp == BOULDER && throws_rocks(mtmp->data)) { @@ -1875,7 +1874,7 @@ int style; break; } } - if (t && otyp == BOULDER) { + if ((t = t_at(bhitpos.x, bhitpos.y)) != 0 && otyp == BOULDER) { switch (t->ttyp) { case LANDMINE: if (rn2(10) > 2) {