]> granicus.if.org Git - nethack/commitdiff
Fix launched object accessing a deleted trap
authorPasi Kallinen <paxed@alt.org>
Sun, 13 Oct 2019 17:40:54 +0000 (20:40 +0300)
committerPasi Kallinen <paxed@alt.org>
Sun, 13 Oct 2019 17:40:58 +0000 (20:40 +0300)
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
src/trap.c

index e87280bddbea016aa6e0b0b792b5f59803fa6c32..94af4399698ff3844738aba3264a5758429e4607 100644 (file)
@@ -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
index 8d0dddb6a87831473781116f64ffe6a0efe444d6..6b9884ea60edac9ec4a92cc4514316f70459a0e7 100644 (file)
@@ -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) {