From 5cfa4cd9f6593ca4bf096566b92d02062395343a Mon Sep 17 00:00:00 2001 From: Mika Kuoppala Date: Wed, 13 Dec 2023 19:11:13 +0200 Subject: [PATCH] src/dog: Fix TIN or EGG based corpsenm TIN or EGG can have the corpsenm not assigned into a proper monster and instead have an value of -1. Take this into account in assigning the monster (fptr) pointer to only point into >= LOW_PM monste entries. --- src/dog.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/dog.c b/src/dog.c index 1da5b8747..2bd734b44 100644 --- a/src/dog.c +++ b/src/dog.c @@ -931,14 +931,15 @@ dogfood(struct monst *mon, struct obj *obj) fx = (obj->otyp == CORPSE || obj->otyp == TIN || obj->otyp == EGG) ? obj->corpsenm : NUMMONS; /* valid mons[mndx] to pacify static analyzer */ - fptr = &mons[fx]; + + fptr = fx >= LOW_PM ? &mons[fx] : NULL; if (obj->otyp == CORPSE && is_rider(fptr)) return TABU; if ((obj->otyp == CORPSE || obj->otyp == EGG) /* Medusa's corpse doesn't pass the touch_petrifies() test but does cause petrification if eaten */ - && (touch_petrifies(fptr) || obj->corpsenm == PM_MEDUSA) + && ((fptr && touch_petrifies(fptr)) || obj->corpsenm == PM_MEDUSA) && !resists_ston(mon)) return POISON; if (obj->otyp == LUMP_OF_ROYAL_JELLY