Jiri Moskovcak 9ab22e9
commit 6aab2606ce1bcbdfc2198eafa08afc22597768cf
Jiri Moskovcak 9ab22e9
Author: Michal Toman <mtoman@redhat.com>
Jiri Moskovcak 9ab22e9
Date:   Mon Aug 1 16:11:51 2011 +0200
Jiri Moskovcak 9ab22e9
Jiri Moskovcak 9ab22e9
    interactive plugins: do not truncate message on EAGAIN
Jiri Moskovcak 9ab22e9
Jiri Moskovcak 9ab22e9
diff --git a/src/gui-wizard-gtk/wizard.c b/src/gui-wizard-gtk/wizard.c
Jiri Moskovcak 9ab22e9
index a6c48eb..4dcfd34 100644
Jiri Moskovcak 9ab22e9
--- a/src/gui-wizard-gtk/wizard.c
Jiri Moskovcak 9ab22e9
+++ b/src/gui-wizard-gtk/wizard.c
Jiri Moskovcak 9ab22e9
@@ -213,6 +213,7 @@ static page_obj_t pages[] =
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
 static page_obj_t *added_pages[NUM_PAGES];
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
+static struct strbuf *line = NULL;
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
 /* Utility functions */
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
@@ -1174,7 +1175,8 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
Jiri Moskovcak 9ab22e9
     char *newline;
Jiri Moskovcak 9ab22e9
     char *raw;
Jiri Moskovcak 9ab22e9
     int r;
Jiri Moskovcak 9ab22e9
-    struct strbuf *line = strbuf_new();
Jiri Moskovcak 9ab22e9
+    if (!line)
Jiri Moskovcak 9ab22e9
+        line = strbuf_new();
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
     int alert_prefix_len = strlen(REPORT_PREFIX_ALERT);
Jiri Moskovcak 9ab22e9
     int ask_prefix_len = strlen(REPORT_PREFIX_ASK);
Jiri Moskovcak 9ab22e9
@@ -1348,8 +1350,6 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
Jiri Moskovcak 9ab22e9
         strbuf_append_str(line, raw);
Jiri Moskovcak 9ab22e9
     }
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
-    strbuf_free(line);
Jiri Moskovcak 9ab22e9
-
Jiri Moskovcak 9ab22e9
     if (r < 0 && errno == EAGAIN)
Jiri Moskovcak 9ab22e9
         /* We got all buffered data, but fd is still open. Done for now */
Jiri Moskovcak 9ab22e9
         return TRUE; /* "please don't remove this event (yet)" */
Jiri Moskovcak 9ab22e9
@@ -1415,6 +1415,10 @@ static gboolean consume_cmd_output(GIOChannel *source, GIOCondition condition, g
Jiri Moskovcak 9ab22e9
                 gtk_label_set_text(evd->status_label, msg);
Jiri Moskovcak 9ab22e9
                 free(msg);
Jiri Moskovcak 9ab22e9
 
Jiri Moskovcak 9ab22e9
+                /* free child output buffer */
Jiri Moskovcak 9ab22e9
+                strbuf_free(line);
Jiri Moskovcak 9ab22e9
+                line = NULL;
Jiri Moskovcak 9ab22e9
+
Jiri Moskovcak 9ab22e9
                 /* Enable (un-gray out) navigation buttons */
Jiri Moskovcak 9ab22e9
                 gtk_widget_set_sensitive(GTK_WIDGET(g_assistant), true);
Jiri Moskovcak 9ab22e9