#R650: Game crash (Panic - obj not free)

> <email deleted>
> Oops! [...]
> Suddenly, the dungeon collapses.
> place_object: obj not free
>
> The crash is reproducible in wizmode by wishing for a landmine, arming it and
> pushing a wished-for boulder onto it.
This commit is contained in:
nethack.allison
2002-03-23 01:35:59 +00:00
parent 9fd9ff3db9
commit fba4cbd6af
3 changed files with 6 additions and 4 deletions

View File

@@ -2,6 +2,7 @@ $RCSfile$ $Revision$ $Date$
General Fixes and Modified Features
-----------------------------------
Prevent panic() obj_not_free when pushing a boulder over a landmine
Platform- and/or Interface-Specific Fixes

View File

@@ -438,8 +438,9 @@ struct obj *obj; /* only scatter this obj */
&& rn2(10)) {
if (otmp->otyp == BOULDER) {
pline("%s apart.", Tobjnam(otmp, "break"));
fracture_rock(otmp);
place_object(otmp, sx, sy); /* put fragments on floor */
fracture_rock(otmp); /* the will place fragments on floor */
obj_extract_self(otmp);
place_object(otmp, sx, sy);
if ((otmp = sobj_at(BOULDER, sx, sy)) != 0) {
/* another boulder here, restack it to the top */
obj_extract_self(otmp);

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)weapon.c 3.4 2002/02/07 */
/* SCCS Id: @(#)weapon.c 3.4 2002/03/22 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
@@ -871,7 +871,7 @@ enhance_weapon_skill()
/* start with a legend if any entries will be annotated
with "*" or "#" below */
if (eventually_advance > 0 || maxxed_cnt > 0) {
any.a_int = 0;
any.a_void = 0;
if (eventually_advance > 0) {
Sprintf(buf,
"(Skill%s flagged by \"*\" may be enhanced %s.)",