From: Safey A.Halim Date: Sun, 6 Mar 2011 13:18:16 +0000 (+0000) Subject: Codesonar fixes for gdbmi library X-Git-Tag: initial-import-from-subversion-38251~19021 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=952d85211f95cc6c25f64c8c9e7e2a13cc9d13c0;p=oweals%2Fgnunet.git Codesonar fixes for gdbmi library --- diff --git a/src/monkey/gdbmi_connect.c b/src/monkey/gdbmi_connect.c index c6e73879f..c698a0eca 100644 --- a/src/monkey/gdbmi_connect.c +++ b/src/monkey/gdbmi_connect.c @@ -273,53 +273,42 @@ mi_output *mi_get_response_blk(mi_h *h) } do { - if (1) - { - /* - That's a must. If we just keep trying to read and failing things - become really sloooowwww. Instead we try and if it fails we wait - until something is available. - TODO: Implement something with the time out, a callback to ask the - application is we have to wait or not could be a good thing. - */ - fd_set set; - struct timeval timeout; - int ret; - - r=mi_get_response(h); - if (r) - return mi_retire_response(h); - - FD_ZERO(&set); - FD_SET(h->from_gdb[0],&set); - timeout.tv_sec=h->time_out; - timeout.tv_usec=0; - ret=TEMP_FAILURE_RETRY(select(FD_SETSIZE,&set,NULL,NULL,&timeout)); - if (!ret) - { - if (!mi_check_running(h)) - { - h->died=1; - mi_error=MI_GDB_DIED; - return NULL; - } - if (h->time_out_cb) - ret=h->time_out_cb(h->time_out_cb_data); - if (!ret) - { - mi_error=MI_GDB_TIME_OUT; - return NULL; - } - } - } - else - { - r=mi_get_response(h); - if (r) - return mi_retire_response(h); - else - usleep(100); - } + /* + That's a must. If we just keep trying to read and failing things + become really sloooowwww. Instead we try and if it fails we wait + until something is available. + TODO: Implement something with the time out, a callback to ask the + application is we have to wait or not could be a good thing. + */ + fd_set set; + struct timeval timeout; + int ret; + + r=mi_get_response(h); + if (r) + return mi_retire_response(h); + + FD_ZERO(&set); + FD_SET(h->from_gdb[0],&set); + timeout.tv_sec=h->time_out; + timeout.tv_usec=0; + ret=TEMP_FAILURE_RETRY(select(FD_SETSIZE,&set,NULL,NULL,&timeout)); + if (!ret) + { + if (!mi_check_running(h)) + { + h->died=1; + mi_error=MI_GDB_DIED; + return NULL; + } + if (h->time_out_cb) + ret=h->time_out_cb(h->time_out_cb_data); + if (!ret) + { + mi_error=MI_GDB_TIME_OUT; + return NULL; + } + } } while (!r); diff --git a/src/monkey/gdbmi_get_free_vt.c b/src/monkey/gdbmi_get_free_vt.c index 30e8b355b..25e5e75a7 100644 --- a/src/monkey/gdbmi_get_free_vt.c +++ b/src/monkey/gdbmi_get_free_vt.c @@ -92,8 +92,10 @@ int mi_look_for_free_vt() } /* Get the state of the console -- in particular, the free VT field */ - if (ioctl(console_fd,VT_GETSTATE,&vts)) + if (ioctl(console_fd,VT_GETSTATE,&vts)) { + close(console_fd); return -2; + } close(console_fd); /* We attempt to set our euid to 0; if we were run with euid 0 to