From: PatR Date: Tue, 20 Nov 2018 00:24:10 +0000 (-0800) Subject: life-saving vs sickness X-Git-Tag: nmake-explicit-path~155 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ffac5f1a65a427591f2b3166eb6f7811ac19550c;p=nethack life-saving vs sickness Replace an old instance of direct manipulation of an intrinsic. If life-saving occurs 1 turn before sickness will kill the hero, the sickness if cured. But it was leaving delated_killer for SICK allocated. Harmless but a bug none the less. --- diff --git a/src/end.c b/src/end.c index a2f8967d0..7d89bd03a 100644 --- a/src/end.c +++ b/src/end.c @@ -861,8 +861,7 @@ int how; } /* cure impending doom of sickness hero won't have time to fix */ if ((Sick & TIMEOUT) == 1L) { - u.usick_type = 0; - set_itimeout(&Sick, 0L); + make_sick(0L, (char *) 0, FALSE, SICK_ALL); } if (how == CHOKING) init_uhunger(); @@ -2051,10 +2050,11 @@ struct kinfo *kptr; } if (k == (struct kinfo *) 0) { - impossible("dealloc_killer not on list"); + impossible("dealloc_killer (#%d) not on list", kptr->id); } else { prev->next = k->next; free((genericptr_t) k); + debugpline1("freed delayed killer #%d", kptr->id); } } @@ -2067,7 +2067,7 @@ int mode; if (perform_bwrite(mode)) { for (kptr = &killer; kptr != (struct kinfo *) 0; kptr = kptr->next) { - bwrite(fd, (genericptr_t) kptr, sizeof(struct kinfo)); + bwrite(fd, (genericptr_t) kptr, sizeof (struct kinfo)); } } if (release_data(mode)) { @@ -2086,9 +2086,9 @@ int fd; struct kinfo *kptr; for (kptr = &killer; kptr != (struct kinfo *) 0; kptr = kptr->next) { - mread(fd, (genericptr_t) kptr, sizeof(struct kinfo)); + mread(fd, (genericptr_t) kptr, sizeof (struct kinfo)); if (kptr->next) { - kptr->next = (struct kinfo *) alloc(sizeof(struct kinfo)); + kptr->next = (struct kinfo *) alloc(sizeof (struct kinfo)); } } }