mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-22 05:25:03 -05:00
Clearing and refilling the code-pages list box can cause a
re-entrant call to its handler in config.c, which destroys the previous value in cfg->line_codepage. Therefore, preserve the right value in an automatic variable until all the re-entrant calls have finished. [originally from svn r8592]
This commit is contained in:
parent
f8a260d59f
commit
b024b57644
8
config.c
8
config.c
@ -317,14 +317,14 @@ static void codepage_handler(union control *ctrl, void *dlg,
|
|||||||
Config *cfg = (Config *)data;
|
Config *cfg = (Config *)data;
|
||||||
if (event == EVENT_REFRESH) {
|
if (event == EVENT_REFRESH) {
|
||||||
int i;
|
int i;
|
||||||
const char *cp;
|
const char *cp, *thiscp;
|
||||||
dlg_update_start(ctrl, dlg);
|
dlg_update_start(ctrl, dlg);
|
||||||
strcpy(cfg->line_codepage,
|
thiscp = cp_name(decode_codepage(cfg->line_codepage));
|
||||||
cp_name(decode_codepage(cfg->line_codepage)));
|
|
||||||
dlg_listbox_clear(ctrl, dlg);
|
dlg_listbox_clear(ctrl, dlg);
|
||||||
for (i = 0; (cp = cp_enumerate(i)) != NULL; i++)
|
for (i = 0; (cp = cp_enumerate(i)) != NULL; i++)
|
||||||
dlg_listbox_add(ctrl, dlg, cp);
|
dlg_listbox_add(ctrl, dlg, cp);
|
||||||
dlg_editbox_set(ctrl, dlg, cfg->line_codepage);
|
dlg_editbox_set(ctrl, dlg, thiscp);
|
||||||
|
strcpy(cfg->line_codepage, thiscp);
|
||||||
dlg_update_done(ctrl, dlg);
|
dlg_update_done(ctrl, dlg);
|
||||||
} else if (event == EVENT_VALCHANGE) {
|
} else if (event == EVENT_VALCHANGE) {
|
||||||
dlg_editbox_get(ctrl, dlg, cfg->line_codepage,
|
dlg_editbox_get(ctrl, dlg, cfg->line_codepage,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user