fix #H6942 - dropx vs hold_another_object
Dropping an existing fragile item while levitating will usually break it. Getting a new wished-for fragile item and dropping it because of fumbling or overfull inventory never would. Some callers of hold_another_object() held on to its return value, others discarded that. That return value was unsafe if the item was dropped and fell down a hole (or broke [after this change]). Return Null if we can't be sure of the value, and make sure all callers are prepared to deal with Null.
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1545383614 2018/12/21 09:13:34 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.675 $ */
|
||||
/* NetHack 3.6 extern.h $NHDT-Date: 1545597403 2018/12/23 20:36:43 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.676 $ */
|
||||
/* Copyright (c) Steve Creps, 1988. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -536,7 +536,7 @@ E void FDECL(impact_drop, (struct obj *, XCHAR_P, XCHAR_P, XCHAR_P));
|
||||
E int NDECL(dothrow);
|
||||
E int NDECL(dofire);
|
||||
E void FDECL(endmultishot, (BOOLEAN_P));
|
||||
E void FDECL(hitfloor, (struct obj *));
|
||||
E void FDECL(hitfloor, (struct obj *, BOOLEAN_P));
|
||||
E void FDECL(hurtle, (int, int, int, BOOLEAN_P));
|
||||
E void FDECL(mhurtle, (struct monst *, int, int, int));
|
||||
E boolean FDECL(throwing_weapon, (struct obj *));
|
||||
|
||||
Reference in New Issue
Block a user