fixing leak
[oweals/gnunet.git] / src / monkey / gdbmi_connect.c
index c6e73879f8f089940cb0c0a0e5c41e60945993a6..7ccae081af7146ad55414b21f47c4e9a63765239 100644 (file)
@@ -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);
 
@@ -341,9 +330,9 @@ void mi_send_commands(mi_h *h, const char *file)
    {
     if (fgets(b,PATH_MAX,f))
       {
-       //printf("Send: %s\n",b);
-       mi_send(h,b);
-       mi_res_simple_done(h);
+       //printf("Send: %s\n",b);
+       mi_send (h, "%s", b);
+       mi_res_simple_done(h);
       }
    }
  fclose(f);
@@ -566,11 +555,18 @@ int mi_send(mi_h *h, const char *format, ...)
  va_start(argptr,format);
  ret=vasprintf(&str,format,argptr);
  va_end(argptr);
- fputs(str,h->to);
- fflush(h->to);
- if (h->to_gdb_echo)
-    h->to_gdb_echo(str,h->to_gdb_echo_data);
- free(str);
+ if (-1 != ret)
+   {
+     fputs(str,h->to);
+     fflush(h->to);
+     if (h->to_gdb_echo)
+       h->to_gdb_echo(str,h->to_gdb_echo_data);
+     free(str);
+   }
+ else
+   {
+     abort ();
+   }
 
  return ret;
 }