gui: Shut down curses before rereading the config file.
authorAndre Noll <maan@systemlinux.org>
Tue, 7 Jan 2014 16:14:12 +0000 (16:14 +0000)
committerAndre Noll <maan@systemlinux.org>
Sun, 4 May 2014 12:04:04 +0000 (14:04 +0200)
If the config file contains errors, gui_cmdline_parser_config_file()
calls exit() while curses is still active, leading to messed up
terminal settings. Fix this by calling shutdown_curses() before
parsing the config file, and init_curses() thereafter.

gui.c

diff --git a/gui.c b/gui.c
index 5a2e659..716e299 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -1362,7 +1362,13 @@ static void com_reread_conf(void)
        }
        PARA_INFO_LOG("rereading command line options and config file");
        gui_cmdline_parser_ext(_argc, _argv, &conf, &params);
+       /*
+        * Despite .print_errors is set to 0, gengetopt will print to stderr
+        * anyway, and exit on errors. So we have to shutdown curses first.
+        */
+       shutdown_curses();
        gui_cmdline_parser_config_file(cf, &conf, &params);
+       init_curses();
        PARA_NOTICE_LOG("config file reloaded");
        if (check_key_map_args() < 0)
                finish(EXIT_FAILURE);