[gnome-builder] gb-search-box: fix released ref of GbSearchDisplay



commit bcd09f98da39718b23ade2dba4914282b84c18ef
Author: Sebastien Lafargue <slafargue gnome org>
Date:   Sat Oct 3 20:52:27 2015 +0200

    gb-search-box: fix released ref of GbSearchDisplay
    
    If you quit Gnome--Builder with the searchbox's popover
    opened, you get this critical message:
    
    gb-search-display[25745]: CRITICAL:
    gb_search_display_get_context:
    assertion 'GB_IS_SEARCH_DISPLAY (self)' failed
    
    This is due to the fact that the searchbox try to use
    an already released GbSearchDisplay

 src/search/gb-search-box.c |   37 ++++++++++++++++++++-----------------
 1 files changed, 20 insertions(+), 17 deletions(-)
---
diff --git a/src/search/gb-search-box.c b/src/search/gb-search-box.c
index 39158e3..af38352 100644
--- a/src/search/gb-search-box.c
+++ b/src/search/gb-search-box.c
@@ -88,23 +88,26 @@ gb_search_box_delay_cb (gpointer user_data)
 
   self->delay_timeout = 0;
 
-  context = gb_search_display_get_context (self->display);
-  if (context)
-    ide_search_context_cancel (context);
-
-  search_engine = gb_search_box_get_search_engine (self);
-  if (!search_engine)
-    return G_SOURCE_REMOVE;
-
-  search_text = gtk_entry_get_text (GTK_ENTRY (self->entry));
-  if (!search_text)
-    return G_SOURCE_REMOVE;
-
-  /* TODO: Remove search text */
-  context = ide_search_engine_search (search_engine, search_text);
-  gb_search_display_set_context (self->display, context);
-  ide_search_context_execute (context, search_text, 7);
-  g_object_unref (context);
+  if (self->display)
+    {
+      context = gb_search_display_get_context (self->display);
+      if (context)
+        ide_search_context_cancel (context);
+
+      search_engine = gb_search_box_get_search_engine (self);
+      if (!search_engine)
+        return G_SOURCE_REMOVE;
+
+      search_text = gtk_entry_get_text (GTK_ENTRY (self->entry));
+      if (!search_text)
+        return G_SOURCE_REMOVE;
+
+      /* TODO: Remove search text */
+      context = ide_search_engine_search (search_engine, search_text);
+      gb_search_display_set_context (self->display, context);
+      ide_search_context_execute (context, search_text, 7);
+      g_object_unref (context);
+    }
 
   return G_SOURCE_REMOVE;
 }


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