gui: Reset command buf offset on errors.
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index 5a2e659d159e6b6225b5ec94adc2796138d5b358..2a0174b8e92e7dfa9ff0c4fee7f8929b9cbb7b20 100644 (file)
--- a/gui.c
+++ b/gui.c
@@ -1054,6 +1054,7 @@ repeat:
                                close(command_fds[i]);
                                command_fds[i] = -1;
                                flags[i] = 0;
+                               cbo[i] = 0;
                                if (command_fds[!i] < 0) /* both fds closed */
                                        return 0;
                        }
@@ -1362,7 +1363,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);