Prevent pack corruption

This commit is contained in:
jl777
2019-03-06 03:17:32 -11:00
parent 53b12740a3
commit 25e1e4c703
4 changed files with 24 additions and 24 deletions

View File

@@ -308,7 +308,8 @@ attack(struct rogue_state *rs,THING *mp)
mp=NULL;
leave_pack(rs,steal, FALSE, FALSE);
msg(rs,"she stole %s!", inv_name(steal, TRUE));
discard(steal);
if ( steal->o_count <= 0 )
discard(steal);
}
}
otherwise:
@@ -600,8 +601,7 @@ remove_mon(struct rogue_state *rs,coord *mp, THING *tp, bool waskill)
detach(tp->t_pack, obj);
if (waskill)
fall(rs,obj, FALSE);
else if ( obj->o_count <= 0 )
discard(obj);
else discard(obj);
}
moat(mp->y, mp->x) = NULL;
mvaddch(mp->y, mp->x, tp->t_oldch);

View File

@@ -220,7 +220,7 @@ quaff(struct rogue_state *rs)
call_it(rs,&pot_info[obj->o_which]);
if (discardit)
discard(obj);
discard(obj);
return;
}

View File

@@ -313,7 +313,7 @@ def:
call_it(rs,&scr_info[obj->o_which]);
if (discardit)
discard(obj);
discard(obj);
}
/*

View File

@@ -129,28 +129,28 @@ fall(struct rogue_state *rs,THING *obj, bool pr)
if (fallpos(&obj->o_pos, &fpos))
{
pp = INDEX(fpos.y, fpos.x);
pp->p_ch = (char) obj->o_type;
obj->o_pos = fpos;
if (cansee(rs,fpos.y, fpos.x))
{
if (pp->p_monst != NULL)
pp->p_monst->t_oldch = (char) obj->o_type;
else
mvaddch(fpos.y, fpos.x, obj->o_type);
}
attach(lvl_obj, obj);
return;
pp = INDEX(fpos.y, fpos.x);
pp->p_ch = (char) obj->o_type;
obj->o_pos = fpos;
if (cansee(rs,fpos.y, fpos.x))
{
if (pp->p_monst != NULL)
pp->p_monst->t_oldch = (char) obj->o_type;
else
mvaddch(fpos.y, fpos.x, obj->o_type);
}
attach(lvl_obj, obj);
return;
}
if (pr)
{
if (has_hit)
{
endmsg(rs);
has_hit = FALSE;
}
msg(rs,"the %s vanishes as it hits the ground",
weap_info[obj->o_which].oi_name);
if (has_hit)
{
endmsg(rs);
has_hit = FALSE;
}
msg(rs,"the %s vanishes as it hits the ground",
weap_info[obj->o_which].oi_name);
}
discard(obj);
}