debian #184911 - quitting while tty mode inventory is displayed

The tty menu code wasn't totally reentrant, causing it to free memory
that wasn't on the heap if you had your inventory displayed, ^C then
ask to see the inventory again.  Solved this by converting the buffer used
by process_menu_window to be heap-allocated.  If the Quit code could return at
this point, this would still be very bad, but since it doesn't, this is OK.
This commit is contained in:
cohrs
2003-10-14 07:35:01 +00:00
parent 0d533b7b39
commit cc2105b7b4
2 changed files with 4 additions and 2 deletions

View File

@@ -63,6 +63,7 @@ X11: avoid a possible crash when using window manger to close a player
selection window
Gnome: add Quiver menu item, fix outdated Quit menu item
Gnome: key values on unsigned char platform could fail to compare correctly
tty: avoid crash displaying quit inventory if inventory was already displayed
General New Features

View File

@@ -1140,12 +1140,12 @@ struct WinDesc *cw;
int n, curr_page, page_lines;
boolean finished, counting, reset_count;
char *cp, *rp, resp[QBUFSZ], gacc[QBUFSZ],
*msave, morestr[QBUFSZ];
*msave, *morestr;
curr_page = page_lines = 0;
page_start = page_end = 0;
msave = cw->morestr; /* save the morestr */
cw->morestr = morestr;
cw->morestr = morestr = (char*) alloc((unsigned) QBUFSZ);
counting = FALSE;
count = 0L;
reset_count = TRUE;
@@ -1429,6 +1429,7 @@ struct WinDesc *cw;
} /* while */
cw->morestr = msave;
free((genericptr_t)morestr);
}
STATIC_OVL void