SF.net SVN: geany:[4275] trunk

ntrel at users.sourceforge.net ntrel at xxxxx
Thu Oct 1 11:06:08 UTC 2009


Revision: 4275
          http://geany.svn.sourceforge.net/geany/?rev=4275&view=rev
Author:   ntrel
Date:     2009-10-01 11:06:08 +0000 (Thu, 01 Oct 2009)

Log Message:
-----------
Fix wrong creation of filetype template menu items for custom
filetypes.

Modified Paths:
--------------
    trunk/ChangeLog
    trunk/src/templates.c

Modified: trunk/ChangeLog
===================================================================
--- trunk/ChangeLog	2009-09-30 19:44:59 UTC (rev 4274)
+++ trunk/ChangeLog	2009-10-01 11:06:08 UTC (rev 4275)
@@ -1,3 +1,10 @@
+2009-10-01  Nick Treleaven  <nick(dot)treleaven(at)btinternet(dot)com>
+
+ * src/templates.c:
+   Fix wrong creation of filetype template menu items for custom
+   filetypes.
+
+
 2009-09-30  Enrico Tröger  <enrico(dot)troeger(at)uvena(dot)de>
 
  * src/symbols.c:

Modified: trunk/src/templates.c
===================================================================
--- trunk/src/templates.c	2009-09-30 19:44:59 UTC (rev 4274)
+++ trunk/src/templates.c	2009-10-01 11:06:08 UTC (rev 4275)
@@ -247,8 +247,7 @@
 
 
 static void
-on_new_with_template                   (GtkMenuItem     *menuitem,
-                                        gpointer         user_data)
+on_new_with_filetype_template(GtkMenuItem *menuitem, gpointer user_data)
 {
 	GeanyFiletype *ft = user_data;
 	gchar *template = templates_get_template_new_file(ft);
@@ -259,7 +258,7 @@
 
 
 /* template items for the new file menu */
-static void create_new_menu_items(void)
+static void create_new_filetype_items(void)
 {
 	GSList *node;
 
@@ -269,18 +268,18 @@
 		GtkWidget *tmp_menu, *tmp_button;
 		const gchar *label = ft->title;
 
-		if (ft_templates[ft->id] == NULL)
+		if (ft->id >= GEANY_MAX_BUILT_IN_FILETYPES || ft_templates[ft->id] == NULL)
 			continue;
 
 		tmp_menu = gtk_menu_item_new_with_label(label);
 		gtk_widget_show(tmp_menu);
 		gtk_container_add(GTK_CONTAINER(new_with_template_menu), tmp_menu);
-		g_signal_connect(tmp_menu, "activate", G_CALLBACK(on_new_with_template), ft);
+		g_signal_connect(tmp_menu, "activate", G_CALLBACK(on_new_with_filetype_template), ft);
 
 		tmp_button = gtk_menu_item_new_with_label(label);
 		gtk_widget_show(tmp_button);
 		gtk_container_add(GTK_CONTAINER(toolbar_new_file_menu), tmp_button);
-		g_signal_connect(tmp_button, "activate", G_CALLBACK(on_new_with_template), ft);
+		g_signal_connect(tmp_button, "activate", G_CALLBACK(on_new_with_filetype_template), ft);
 	}
 }
 
@@ -445,7 +444,7 @@
 	/* we hold our own ref on the menu in case it is not used in the toolbar */
 	g_object_ref(toolbar_new_file_menu);
 
-	create_new_menu_items();
+	create_new_filetype_items();
 
 	sep1 = gtk_separator_menu_item_new();
 	gtk_container_add(GTK_CONTAINER(new_with_template_menu), sep1);
@@ -605,6 +604,8 @@
 {
 	filetype_id ft_id = FILETYPE_ID(ft);
 
+	g_return_val_if_fail(ft_id < GEANY_MAX_BUILT_IN_FILETYPES, NULL);
+
 	return g_strdup(ft_templates[ft_id]);
 }
 
@@ -614,6 +615,8 @@
 	gchar *ft_template = NULL;
 	gchar *file_header = NULL;
 
+	g_return_val_if_fail(ft->id < GEANY_MAX_BUILT_IN_FILETYPES, NULL);
+
 	if (FILETYPE_ID(ft) == GEANY_FILETYPES_NONE)
 		return get_file_template(ft);
 


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