[gnome-builder] ctags: hold a reference to the index for the lifetime of the results



commit b91f14b34d9d58fea072d33fdbb46b4b38a2230c
Author: Christian Hergert <chergert redhat com>
Date:   Mon Oct 12 12:36:20 2015 -0400

    ctags: hold a reference to the index for the lifetime of the results
    
    We could lose our index when an index is reloaded (because it was changed).
    Since we are going to create more tags more often now (using `make ctags`)
    this will become even more of an issue. Either way it was a crasher and
    needed fixing.

 plugins/ctags/ide-ctags-completion-provider.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/plugins/ctags/ide-ctags-completion-provider.c b/plugins/ctags/ide-ctags-completion-provider.c
index b3b9c08..fc6e1e9 100644
--- a/plugins/ctags/ide-ctags-completion-provider.c
+++ b/plugins/ctags/ide-ctags-completion-provider.c
@@ -211,6 +211,15 @@ ide_ctags_completion_provider_populate (GtkSourceCompletionProvider *provider,
       const gchar *last_name = NULL;
       guint tmp_len = word_len;
       gsize n_entries = 0;
+      gchar gdata_key[64];
+
+      /*
+       * Make sure we hold a reference to the index for the lifetime of the results.
+       * When the results are released, so could our indexes.
+       */
+      g_snprintf (gdata_key, sizeof gdata_key, "ctags-%d", i);
+      g_object_set_data_full (G_OBJECT (self->results), gdata_key,
+                              g_object_ref (index), g_object_unref);
 
       while (entries == NULL && *copy)
         {


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