[gtk/wip/baedert/for-master: 37/39] textbuffer: Don't try to inset NULL text from clipboard




commit bb5ded5184b55ff33a51fc08f9c31059f2dd0d93
Author: Timm Bäder <mail baedert org>
Date:   Sat Sep 19 18:41:10 2020 +0200

    textbuffer: Don't try to inset NULL text from clipboard
    
    That used to generate a critical error message.
    
    Also free() the data.

 gtk/gtktextbuffer.c | 23 ++++++++++++++---------
 1 file changed, 14 insertions(+), 9 deletions(-)
---
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index 854799d8a8..18861d301c 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -310,6 +310,7 @@ gtk_text_buffer_deserialize_text_plain_finish (GObject      *source,
   GtkTextIter start, end;
   GError *error = NULL;
   gssize written;
+  char *data;
 
   written = g_output_stream_splice_finish (stream, result, &error);
   if (written < 0)
@@ -318,15 +319,19 @@ gtk_text_buffer_deserialize_text_plain_finish (GObject      *source,
       return;
     }
 
-  buffer = g_value_get_object (gdk_content_deserializer_get_value (deserializer));
-  gtk_text_buffer_get_end_iter (buffer, &end);
-  gtk_text_buffer_insert (buffer, 
-                          &end,
-                          g_memory_output_stream_steal_data (G_MEMORY_OUTPUT_STREAM (
-                               g_filter_output_stream_get_base_stream (G_FILTER_OUTPUT_STREAM (stream)))),
-                          -1);
-  gtk_text_buffer_get_bounds (buffer, &start, &end);
-  gtk_text_buffer_select_range (buffer, &start, &end);
+  data = g_memory_output_stream_steal_data (G_MEMORY_OUTPUT_STREAM (
+                               g_filter_output_stream_get_base_stream (G_FILTER_OUTPUT_STREAM (stream))));
+
+  if (data)
+    {
+      buffer = g_value_get_object (gdk_content_deserializer_get_value (deserializer));
+      gtk_text_buffer_get_end_iter (buffer, &end);
+      gtk_text_buffer_insert (buffer, &end, data, -1);
+      gtk_text_buffer_get_bounds (buffer, &start, &end);
+      gtk_text_buffer_select_range (buffer, &start, &end);
+
+      g_free (data);
+    }
 
   gdk_content_deserializer_return_success (deserializer);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]