Revision: 4416 http://geany.svn.sourceforge.net/geany/?rev=4416&view=rev Author: ntrel Date: 2009-11-10 18:37:23 +0000 (Tue, 10 Nov 2009)
Log Message: ----------- Fix invalid tree iter access when using tv_iters.tag_other but not using tv_iters.tag_variable.
Modified Paths: -------------- trunk/ChangeLog trunk/src/symbols.c
Modified: trunk/ChangeLog =================================================================== --- trunk/ChangeLog 2009-11-10 17:49:24 UTC (rev 4415) +++ trunk/ChangeLog 2009-11-10 18:37:23 UTC (rev 4416) @@ -2,6 +2,9 @@
* tagmanager/perl.c: Fix Geany segfault with constant tags (#2895168). + * src/symbols.c: + Fix invalid tree iter access when using tv_iters.tag_other but not + using tv_iters.tag_variable.
2009-11-09 Enrico Tröger <enrico(dot)troeger(at)uvena(dot)de>
Modified: trunk/src/symbols.c =================================================================== --- trunk/src/symbols.c 2009-11-10 17:49:24 UTC (rev 4415) +++ trunk/src/symbols.c 2009-11-10 18:37:23 UTC (rev 4416) @@ -657,7 +657,7 @@ &(tv_iters.tag_function), _("Functions"), "classviewer-method", &(tv_iters.tag_macro), _("Labels"), NULL, &(tv_iters.tag_type), _("Constants"), NULL, - &(tv_iters.tag_other), _("Other"), NULL, + &(tv_iters.tag_other), _("Other"), "classviewer-other", NULL); break; } @@ -1061,6 +1061,21 @@ }
+static GdkPixbuf *get_child_icon(GtkTreeStore *tree_store, GtkTreeIter *parent) +{ + GdkPixbuf *icon = NULL; + + if (parent == &tv_iters.tag_other) + { + return get_tag_icon("classviewer-var"); + } + /* copy parent icon */ + gtk_tree_model_get(GTK_TREE_MODEL(tree_store), parent, + SYMBOLS_COLUMN_ICON, &icon, -1); + return icon; +} + + static void add_tree_tag(GeanyDocument *doc, const TMTag *tag, GHashTable *parent_hash) { filetype_id ft_id = FILETYPE_ID(doc->file_type); @@ -1074,15 +1089,12 @@ const gchar *name; const gchar *parent_name = get_parent_name(tag, ft_id); GtkTreeIter iter; - GtkTreeIter *icon_iter = NULL, *child = NULL; - GdkPixbuf *icon = NULL; + GtkTreeIter *child = NULL; + GdkPixbuf *icon = NULL;
- child = &iter; - icon_iter = (parent != &tv_iters.tag_other) ? parent : &tv_iters.tag_variable; + child = &iter; + icon = get_child_icon(tree_store, parent);
- gtk_tree_model_get(GTK_TREE_MODEL(tree_store), icon_iter, - SYMBOLS_COLUMN_ICON, &icon, -1); - if (parent_name) { GtkTreeIter *parent_search =
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.