From 759f419a6dae86e5862133a00546e78a4948d0cf Mon Sep 17 00:00:00 2001 From: simon Date: Wed, 10 Jun 2009 17:42:15 +0000 Subject: [PATCH] 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. git-svn-id: svn://svn.tartarus.org/sgt/putty@8592 cda61777-01e9-0310-a592-d414129be87e --- config.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/config.c b/config.c index 8d492df1..3f0ea931 100644 --- a/config.c +++ b/config.c @@ -317,14 +317,14 @@ static void codepage_handler(union control *ctrl, void *dlg, Config *cfg = (Config *)data; if (event == EVENT_REFRESH) { int i; - const char *cp; + const char *cp, *thiscp; dlg_update_start(ctrl, dlg); - strcpy(cfg->line_codepage, - cp_name(decode_codepage(cfg->line_codepage))); + thiscp = cp_name(decode_codepage(cfg->line_codepage)); dlg_listbox_clear(ctrl, dlg); for (i = 0; (cp = cp_enumerate(i)) != NULL; i++) 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); } else if (event == EVENT_VALCHANGE) { dlg_editbox_get(ctrl, dlg, cfg->line_codepage, -- 2.11.0