summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-11-30 21:42:19 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-11-30 21:42:19 -0500
commit3e7618fef7858fe90dfffee9db951d30009dedf8 (patch)
treef87da9a10713ca80b6b14b184948d987c01acb7e
parent5b1b75b055d0e40ee5c399aec2fb15ade7ef535b (diff)
downloadgtk+-3e7618fef7858fe90dfffee9db951d30009dedf8.tar.gz
textbuffer: Try harder to fix pasting
It turns out we can't just use the size returned by the memory stream as-is, since it may contain unfilled garbage at the end, which utf8 validation will choke on. So, cut it off at the first '\0' we find.
-rw-r--r--gtk/gtktextbuffer.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index a99b25a940..c2cd148868 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -327,6 +327,8 @@ gtk_text_buffer_deserialize_text_plain_finish (GObject *source,
if (data)
{
+ if (memchr (data, '\0', size))
+ size = -1;
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, size);