Blob Blame History Raw
commit 6aab2606ce1bcbdfc2198eafa08afc22597768cf
Author: Michal Toman <mtoman@redhat.com>
Date:   Mon Aug 1 16:11:51 2011 +0200

    interactive plugins: do not truncate message on EAGAIN

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