From 5300484cb626468430d74d7b2c11387e1e9630d0 Mon Sep 17 00:00:00 2001 From: Andre Date: Sun, 2 Jul 2006 17:24:10 +0200 Subject: [PATCH] Fix core dump on audiod pipe errors if (fd < 0) close(fd); is a really bad idea.. --- sdl_gui.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sdl_gui.c b/sdl_gui.c index 3cfabbb5..97d0573a 100644 --- a/sdl_gui.c +++ b/sdl_gui.c @@ -739,7 +739,7 @@ static int configfile_exists(void) */ int main(int argc, char *argv[]) { - int i, ret, fd; + int i, ret, fd = -1; SDLKey sym; sdl_gui_cmdline_parser(argc, argv, &args_info); @@ -759,7 +759,6 @@ int main(int argc, char *argv[]) height = args_info.height_arg; // printf("w=%i,h=%i,ret=%i, cf=%s\n", width, height, ret, args_info.config_file_arg); init_stat_items(); - fd = para_open_audiod_pipe(args_info.stat_cmd_arg); init_SDL(); for (i = 0; fonts[i].name[0]; i++) { char buf[MAXLINE]; @@ -775,6 +774,11 @@ int main(int argc, char *argv[]) update_input(); } for (;;) { + if (fd < 0) { + fd = para_open_audiod_pipe(args_info.stat_cmd_arg); + if (fd < 0) + clean_exit(EXIT_FAILURE); + } ret = draw_status(fd); if (ret < 0) { close(fd); @@ -802,10 +806,6 @@ int main(int argc, char *argv[]) || sym == SDLK_COMPOSE ) continue; - if (fd < 0) { - kill(0, SIGINT); - close(fd); - } fill_input_rect(); update_input(); if (!command_handler()) @@ -814,7 +814,6 @@ int main(int argc, char *argv[]) print_help(); update_pic(); SDL_UpdateRect(screen, 0, 0, 0, 0); - fd = para_open_audiod_pipe(args_info.stat_cmd_arg); break; } } -- 2.30.2