Mercurial > hg > early-roguelike
view urogue/status.c @ 313:2f75940cc544
Advanced Rogue 7: fix a string literal overwrite.
pick_spell() attempted to capitalize type by overwriting the first
character, changing it back later. All calls of pick_spell passed a
string literal as type, and string literals should be considered
immutable.
This has been fixed by using a separate variable for the capitalized
first character. XRogue already has a similar fix.
Reported by John Harris of @Play.
author | John "Elwin" Edwards |
---|---|
date | Tue, 19 Oct 2021 20:39:00 -0400 |
parents | c495a4f288c6 |
children |
line wrap: on
line source
/* status.c - functions for complex status determination of monsters/objects UltraRogue: The Ultimate Adventure in the Dungeons of Doom Copyright (C) 1992, 1993, 1995 Herb Chong All rights reserved. See the file LICENSE.TXT for full copyright and licensing information. */ #include "rogue.h" /* has_defensive_spell() has monster cast a defensive spell. Any flags added here must also be in player_powers[]. */ int has_defensive_spell(struct thing th) { if (on(th, HASOXYGEN)) return(TRUE); if (on(th, CANFLY)) return(TRUE); if (on(th, CANINWALL)) return(TRUE); if (on(th, CANREFLECT)) return(TRUE); if (on(th, CANSEE)) return(TRUE); if (on(th, HASMSHIELD)) return(TRUE); if (on(th, HASSHIELD)) return(TRUE); if (on(th, ISHASTE)) return(TRUE); if (on(th, ISREGEN)) return(TRUE); if (on(th, ISDISGUISE)) return(TRUE); if (on(th, ISINVIS)) return(TRUE); if (on(th, NOCOLD)) return(TRUE); if (on(th, NOFIRE)) return(TRUE); if (on(th, ISELECTRIC)) return(TRUE); return(FALSE); }