From f3a34856c5e4d0e4ebfd615abd1dbd5a457ffd7d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 18 Aug 2015 15:42:56 -0400 Subject: [PATCH] multipress: Only emit preedit signals if needed When clearing the compose buffer, don't emit preedit-changed unconditionally. This triggers a recursion which leads to a crash. https://bugzilla.gnome.org/show_bug.cgi?id=753644 --- modules/input/gtkimcontextmultipress.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/input/gtkimcontextmultipress.c b/modules/input/gtkimcontextmultipress.c index 7c2a2282e..4edcd9df8 100644 --- a/modules/input/gtkimcontextmultipress.c +++ b/modules/input/gtkimcontextmultipress.c @@ -171,11 +171,14 @@ clear_compose_buffer (GtkImContextMultipress *multipress_context) multipress_context->key_last_entered = 0; multipress_context->compose_count = 0; - multipress_context->tentative_match = NULL; cancel_automatic_timeout_commit (multipress_context); - g_signal_emit_by_name (multipress_context, "preedit-changed"); - g_signal_emit_by_name (multipress_context, "preedit-end"); + if (multipress_context->tentative_match) + { + multipress_context->tentative_match = NULL; + g_signal_emit_by_name (multipress_context, "preedit-changed"); + g_signal_emit_by_name (multipress_context, "preedit-end"); + } } /* Finish composing, provide the character, and clear our compose buffer.