use gi.invalid_obj instead of cg.zeroobj

cg.zeroobj was originally added (under its previous unprefixed name)
for providing a one-line way to zero out the fields of a struct obj.

    struct obj tempobj;
    tempobj = cg.zeroobj;

    initfn(struct obj *otmp)
    {
        if (otmp)
            *otmp = cg.zeroobj;
    }

More recently, the address of cg.zeroobj began to be used as a return
flag to indicate some things, but the 'const struct obj zeroobj' wasn't
an ideal fit for the purpose and required a number of casts, including
casting away const.

Provide a better fitting variable (gi.invalid_obj) and eliminate a
number of casts.
This commit is contained in:
nhmall
2023-11-10 11:07:49 -05:00
parent 17dd51d922
commit 314a2a9489
14 changed files with 35 additions and 30 deletions

View File

@@ -2246,7 +2246,7 @@ dodip(void)
if (inaccessible_equipment(obj, "dip", FALSE))
return ECMD_OK;
is_hands = (obj == &cg.zeroobj);
is_hands = (obj == &gi.invalid_obj);
shortestname = (is_hands || is_plural(obj) || pair_of(obj)) ? "them"
: "it";
drink_ok_extra = 0;
@@ -2381,7 +2381,7 @@ potion_dip(struct obj *obj, struct obj *potion)
pline("That is a potion bottle, not a Klein bottle!");
return ECMD_OK;
}
if (obj == &cg.zeroobj) {
if (obj == &gi.invalid_obj) {
You("can't fit your %s into the mouth of the bottle!",
body_part(HAND));
return ECMD_OK;