diff --git a/ChangeLog b/ChangeLog index 2ec7c88b02..02e0bd76f1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2007-03-18 Matthias Clasen + + * gtk/gtkentrycompletion.c (gtk_entry_completion_compute_prefix): + Ensure that the prefix is valid UTF-8. (#419568, Nickolay V. Shmyrev) + 2007-03-18 Matthias Clasen * modules/input/gtkimcontextmultipress.[hc]: diff --git a/gtk/gtkentrycompletion.c b/gtk/gtkentrycompletion.c index d4c51b4f49..d8bc08a06a 100644 --- a/gtk/gtkentrycompletion.c +++ b/gtk/gtkentrycompletion.c @@ -1500,7 +1500,7 @@ gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion) else { gchar *p = prefix; - const gchar *q = text; + gchar *q = text; while (*p && *p == *q) { @@ -1509,6 +1509,19 @@ gtk_entry_completion_compute_prefix (GtkEntryCompletion *completion) } *p = '\0'; + + if (p > prefix) + { + /* strip a partial multibyte character */ + q = g_utf8_find_prev_char (prefix, p); + switch (g_utf8_get_char_validated (q, p - q)) + { + case (gunichar)-2: + case (gunichar)-1: + *q = 0; + default: ; + } + } } }