[anjuta] debug-manager: Fix accessing of invalid tree models.
- From: Sebastien Granjoux <sgranjoux src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [anjuta] debug-manager: Fix accessing of invalid tree models.
- Date: Mon, 19 Nov 2012 17:35:55 +0000 (UTC)
commit 61b7f4916d709c6264aef5967796abc6aa0b4895
Author: Carl-Anton Ingmarsson <ca ingmarsson gmail com>
Date: Sun Nov 18 20:08:21 2012 +0100
debug-manager: Fix accessing of invalid tree models.
We previously stored the DebugTree's model in the gTreeList but the model could be changed
with debug_tree_set_model() which would make the model stored in the gTreeList invalid. Fix
this by storing the DebugTree in the gTreeList instead. This fixes these two warnings.
(anjuta:31701): GLib-GObject-WARNING **: invalid uninstantiatable type `<invalid>' in cast to `GtkTreeModel'
(anjuta:31701): Gtk-CRITICAL **: gtk_tree_model_iter_children: assertion `GTK_IS_TREE_MODEL (tree_model)' failed
https://bugzilla.gnome.org/show_bug.cgi?id=688600
plugins/debug-manager/debug_tree.c | 34 +++++++++++++++++++---------------
1 files changed, 19 insertions(+), 15 deletions(-)
---
diff --git a/plugins/debug-manager/debug_tree.c b/plugins/debug-manager/debug_tree.c
index bf65156..9ed0cfa 100644
--- a/plugins/debug-manager/debug_tree.c
+++ b/plugins/debug-manager/debug_tree.c
@@ -1044,14 +1044,16 @@ on_debug_tree_changed (gpointer data, gpointer user_data)
if (var->name != NULL)
{
/* Search corresponding variable in one tree */
- GList *tree;
+ GList *list;
- for (tree = g_list_first (gTreeList); tree != NULL; tree = g_list_next (tree))
+ for (list = g_list_first (gTreeList); list != NULL; list = g_list_next (list))
{
+ DebugTree *tree = (DebugTree *)list->data;
+
GtkTreeIter iter;
GtkTreeModel *model;
- model = GTK_TREE_MODEL (tree->data);
+ model = debug_tree_get_model (tree);
if (debug_tree_find_name (model, &iter, var->name))
{
@@ -1169,10 +1171,14 @@ on_debug_tree_update_all (const GList *change, gpointer user_data, GError* err)
// Update all tree models
for (list = g_list_first (gTreeList); list != NULL; list = g_list_next (list))
{
- GtkTreeModel* model = GTK_TREE_MODEL (list->data);
+ DebugTree* tree = (DebugTree*)list->data;
+
+ GtkTreeModel* model;
GtkTreeIter iter;
gboolean valid;
+ model = debug_tree_get_model (tree);
+
// Update this tree
for (valid = gtk_tree_model_get_iter_first (model, &iter);
valid;
@@ -1505,14 +1511,17 @@ debug_tree_dump_iter (GtkTreeModel *model, GtkTreeIter *iter, guint indent)
void
debug_tree_dump (void)
{
- GList *tree;
+ GList *list;
- for (tree = g_list_first (gTreeList); tree != NULL; tree = g_list_next (tree))
+ for (list = g_list_first (gTreeList); list != NULL; list = g_list_next (list))
{
- GtkTreeModel *model = (GtkTreeModel *)tree->data;
+ DebugTree* tree = (DebugTree*)list->data;
+
+ GtkTreeModel* model;
GtkTreeIter iter;
gboolean valid;
+ model = debug_tree_get_model (tree);
g_message ("Tree model %p MCEDU", model);
for (valid = gtk_tree_model_get_iter_first (model, &iter);
valid;
@@ -1531,15 +1540,13 @@ DebugTree *
debug_tree_new_with_view (AnjutaPlugin *plugin, GtkTreeView *view)
{
DebugTree *tree = g_new0 (DebugTree, 1);
- GtkTreeModel *model;
tree->plugin = plugin;
tree->view = debug_tree_create(tree, view);
tree->auto_expand = FALSE;
- /* Add this model in list */
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree->view));
- gTreeList = g_list_prepend (gTreeList, model);
+ /* Add this tree in list */
+ gTreeList = g_list_prepend (gTreeList, tree);
/* Connect signal */
g_signal_connect(GTK_TREE_VIEW (tree->view), "row_expanded", G_CALLBACK (on_treeview_row_expanded), tree);
@@ -1560,15 +1567,12 @@ debug_tree_new (AnjutaPlugin* plugin)
void
debug_tree_free (DebugTree * tree)
{
- GtkTreeModel *model;
-
g_return_if_fail (tree);
- model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree->view));
debug_tree_remove_all (tree);
/* Remove from list */
- gTreeList = g_list_remove (gTreeList, model);
+ gTreeList = g_list_remove (gTreeList, tree);
g_signal_handlers_disconnect_by_func (GTK_TREE_VIEW (tree->view),
G_CALLBACK (on_treeview_row_expanded), tree);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]