aacdec: detect buffer overrun and return an errror.
[paraslash.git] / gui.c
diff --git a/gui.c b/gui.c
index f63e99b..49f8f46 100644 (file)
--- a/gui.c
+++ b/gui.c
 #include "ringbuffer.h"
 #include "string.h"
 #include "fd.h"
+#include "error.h"
 
+/** define the array of error lists needed by para_gui */
+INIT_GUI_ERRLISTS;
 extern const char *status_item_list[NUM_STAT_ITEMS];
 static char *stat_content[NUM_STAT_ITEMS];
 
@@ -883,32 +886,25 @@ repeat:
        /* audiod pipe */
        if (audiod_pipe < 0)
                audiod_pipe = open_audiod_pipe();
-       if (audiod_pipe >= 0) {
-               FD_SET(audiod_pipe, &rfds);
-               max_fileno = MAX(max_fileno, audiod_pipe);
-       }
-
+       if (audiod_pipe >= 0)
+               para_fd_set(audiod_pipe, &rfds, &max_fileno);
        /* signal pipe */
-       FD_SET(signal_pipe, &rfds);
-       max_fileno = MAX(max_fileno, signal_pipe);
+       para_fd_set(signal_pipe, &rfds, &max_fileno);
        /* command pipe only for COMMAND_MODE */
-       if (command_pipe >= 0 && mode == COMMAND_MODE) {
-               FD_SET(command_pipe, &rfds);
-               max_fileno = MAX(max_fileno, command_pipe);
-       }
+       if (command_pipe >= 0 && mode == COMMAND_MODE)
+               para_fd_set(command_pipe, &rfds, &max_fileno);
        if (curses_active)
-               FD_SET(STDIN_FILENO, &rfds);
-       ret = select(max_fileno + 1, &rfds, NULL, NULL, &tv);
+               para_fd_set(STDIN_FILENO, &rfds, &max_fileno);
+       ret = para_select(max_fileno + 1, &rfds, NULL, &tv);
 //     PARA_DEBUG_LOG("select returned %d\n", ret);
-
+       if (ret <= 0)
+               goto check_return; /* skip fd checks */
        /* signals */
        if (FD_ISSET(signal_pipe, &rfds)) {
                int sig_nr = para_next_signal();
                if (sig_nr > 0)
                        handle_signal(sig_nr);
        }
-       if (ret <= 0)
-               goto check_return; /* skip fd checks */
        /* read command pipe if ready */
        if (command_pipe >= 0 && mode == COMMAND_MODE &&
                        FD_ISSET(command_pipe, &rfds)) {