reinstate removal of mon guard from is_safemon()
callers were checked:
domove_attackmon_at(mtmp, x, y, displaceu) has mtmp declared nonnull;
there are dereferences of mtmp in the first line of code in
the function.
In domove_core():
The 1st occurrence of is_safemon(mtmp) is guarded by if (mtmp) { }.
The 2nd occurrence of is_safemon(mtmp) is inside an if (mtmp) { } block.
The 3rd occurrence of is_safemon(mtmp) was just remediated by 987be7e8.
In lookaround():
The only occurrence of is_safemon(mtmp) is inside an
if ((mtmp = m_at(x, y)) != 0 [...] { } block.
In do_attack(mtmp), in uhitm.c:
The parameter is declared NONNULLARG1, and the 1st line of
code contains a dereference with mtmp->data, which would
segfault if mtmp were NULL.
This commit is contained in:
@@ -157,7 +157,7 @@
|
||||
* definition here is convenient. No longer limited to pets.
|
||||
*/
|
||||
#define _is_safemon(mon) \
|
||||
(flags.safe_dog && (mon) && (mon)->mpeaceful && canspotmon(mon) \
|
||||
(flags.safe_dog && (mon)->mpeaceful && canspotmon(mon) \
|
||||
&& !Confusion && !Hallucination && !Stunned)
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user