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.
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
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;
} /* while */
cw->morestr = msave;
+ free((genericptr_t)morestr);
}
STATIC_OVL void