entry completion: add checks that entry is set already
authorBilal Elmoussaoui <belmouss@redhat.com>
Tue, 8 Feb 2022 09:51:38 +0000 (10:51 +0100)
committerBilal Elmoussaoui <belmouss@redhat.com>
Tue, 8 Feb 2022 10:22:52 +0000 (11:22 +0100)
If any of the APIs that assumes that the entry is set already is used
before having one already set, things break pretty badly.

Fixes a downstream issue reported at https://github.com/gtk-rs/gtk4-rs/issues/873

gtk/gtkentrycompletion.c

index 408047adf05c69a3ffb4c8bfddb5fb1c95721b29..ef4985af72caf56e11ba764e0d83f32735fad88f 100644 (file)
@@ -1211,6 +1211,8 @@ gtk_entry_completion_match_selected (GtkEntryCompletion *completion,
                                      GtkTreeModel       *model,
                                      GtkTreeIter        *iter)
 {
+  g_assert (completion->entry != NULL);
+
   char *str = NULL;
 
   gtk_tree_model_get (model, iter, completion->text_column, &str, -1);
@@ -1229,6 +1231,8 @@ gtk_entry_completion_cursor_on_match (GtkEntryCompletion *completion,
                                       GtkTreeModel       *model,
                                       GtkTreeIter        *iter)
 {
+  g_assert (completion->entry != NULL);
+
   gtk_entry_completion_insert_completion (completion, model, iter);
 
   return TRUE;
@@ -1317,6 +1321,8 @@ static gboolean
 gtk_entry_completion_real_insert_prefix (GtkEntryCompletion *completion,
                                          const char         *prefix)
 {
+  g_assert (completion->entry != NULL);
+
   if (prefix)
     {
       int key_len;
@@ -1417,6 +1423,8 @@ gtk_entry_completion_insert_completion (GtkEntryCompletion *completion,
 void
 gtk_entry_completion_insert_prefix (GtkEntryCompletion *completion)
 {
+  g_return_if_fail (completion->entry != NULL);
+
   gboolean done;
   char *prefix;
   GtkText *text = gtk_entry_get_text_widget (GTK_ENTRY (completion->entry));