SF.net SVN: geany: [771] trunk
eht16 at users.sourceforge.net
eht16 at xxxxx
Mon Aug 28 16:27:24 UTC 2006
Revision: 771
Author: eht16
Date: 2006-08-28 09:27:16 -0700 (Mon, 28 Aug 2006)
ViewCVS: http://svn.sourceforge.net/geany/?rev=771&view=rev
Log Message:
-----------
Fixed a crash when switching between several filetypes.
Modified Paths:
--------------
trunk/ChangeLog
trunk/src/treeviews.c
trunk/src/utils.c
Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog 2006-08-28 15:07:48 UTC (rev 770)
+++ trunk/ChangeLog 2006-08-28 16:27:16 UTC (rev 771)
@@ -2,6 +2,8 @@
* geany.glade, src/interface.c: Fixed typo in a tooltip text.
* THANKS, src/about.c: Added translator credits.
+ * src/treeviews.c, src/utils.c:
+ Fixed a crash when switching between several filetypes.
2006-08-27 Frank Lanitz <frank at frank.uvena.de>
Modified: trunk/src/treeviews.c
===================================================================
--- trunk/src/treeviews.c 2006-08-28 15:07:48 UTC (rev 770)
+++ trunk/src/treeviews.c 2006-08-28 16:27:16 UTC (rev 771)
@@ -58,6 +58,17 @@
void treeviews_init_tag_list(gint idx)
{
+ // init all GtkTreeIters with -1 to make them invalid to avoid crashes when switching between
+ // filetypes(e.g. config file to Python crashes Geany without this)
+ tv.tag_function.stamp = -1;
+ tv.tag_class.stamp = -1;
+ tv.tag_member.stamp = -1;
+ tv.tag_macro.stamp = -1;
+ tv.tag_variable.stamp = -1;
+ tv.tag_namespace.stamp = -1;
+ tv.tag_struct.stamp = -1;
+ tv.tag_other.stamp = -1;
+
switch (doc_list[idx].file_type->id)
{
case GEANY_FILETYPES_DOCBOOK:
Modified: trunk/src/utils.c
===================================================================
--- trunk/src/utils.c 2006-08-28 15:07:48 UTC (rev 770)
+++ trunk/src/utils.c 2006-08-28 16:27:16 UTC (rev 771)
@@ -742,6 +742,7 @@
case tm_tag_prototype_t:
case tm_tag_function_t:
{
+ if (tv.tag_function.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_function));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
@@ -749,18 +750,21 @@
case tm_tag_macro_t:
case tm_tag_macro_with_arg_t:
{
+ if (tv.tag_macro.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_macro));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
}
case tm_tag_class_t:
{
+ if (tv.tag_class.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_class));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
}
case tm_tag_member_t:
{
+ if (tv.tag_member.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_member));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
@@ -770,24 +774,28 @@
case tm_tag_union_t:
case tm_tag_struct_t:
{
+ if (tv.tag_struct.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_struct));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
}
case tm_tag_variable_t:
{
+ if (tv.tag_variable.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_variable));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
}
case tm_tag_namespace_t:
{
+ if (tv.tag_namespace.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_namespace));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
break;
}
default:
{
+ if (tv.tag_other.stamp == -1) break;
gtk_tree_store_append(doc_list[idx].tag_store, &iter, &(tv.tag_other));
gtk_tree_store_set(doc_list[idx].tag_store, &iter, 0, ((GeanySymbol*)tmp->data)->str, -1);
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list