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.
This commit is contained in:
parent
6a654fbe69
commit
fb0ef69143
1 changed files with 5 additions and 6 deletions
|
|
@ -681,12 +681,13 @@ pick_spell(struct spells spells[], int ability, int num_spells, int power,
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Now display the possible spells */
|
/* Now display the possible spells */
|
||||||
|
/* type_cap is a workaround for code that tried to capitalize type by
|
||||||
|
* temporarily modifying it in place. */
|
||||||
|
char type_cap = toupper(type[0]);
|
||||||
wclear(hw);
|
wclear(hw);
|
||||||
touchwin(hw);
|
touchwin(hw);
|
||||||
wmove(hw, 2, 0);
|
wmove(hw, 2, 0);
|
||||||
*type = toupper(*type);
|
wprintw(hw, " Cost %c%s", type_cap, type + 1);
|
||||||
wprintw(hw, " Cost %s", type);
|
|
||||||
*type = tolower(*type);
|
|
||||||
mvwaddstr(hw, 3, 0,
|
mvwaddstr(hw, 3, 0,
|
||||||
"-----------------------------------------------");
|
"-----------------------------------------------");
|
||||||
maxlen = 47; /* Maximum width of header */
|
maxlen = 47; /* Maximum width of header */
|
||||||
|
|
@ -733,9 +734,7 @@ pick_spell(struct spells spells[], int ability, int num_spells, int power,
|
||||||
|
|
||||||
/* Design prompts */
|
/* Design prompts */
|
||||||
sprintf(label, "Current %s power is %d", type, spell_left);
|
sprintf(label, "Current %s power is %d", type, spell_left);
|
||||||
*type = toupper(*type);
|
sprintf(title, " Cost %c%s", type_cap, type + 1);
|
||||||
sprintf(title, " Cost %s", type);
|
|
||||||
*type = tolower(*type);
|
|
||||||
sprintf(prbuf, "Select a %s or press Cancl to continue.", type);
|
sprintf(prbuf, "Select a %s or press Cancl to continue.", type);
|
||||||
|
|
||||||
/* Set up the main menu structure */
|
/* Set up the main menu structure */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue