SF.net SVN: geany: [477] trunk/src

eht16 at users.sourceforge.net eht16 at xxxxx
Sat Jun 24 18:46:16 UTC 2006


Revision: 477
Author:   eht16
Date:     2006-06-24 11:46:08 -0700 (Sat, 24 Jun 2006)
ViewCVS:  http://svn.sourceforge.net/geany/?rev=477&view=rev

Log Message:
-----------
Added some sanity checks to prevent crashes.

Modified Paths:
--------------
    trunk/src/callbacks.c
    trunk/src/dialogs.c
    trunk/src/geany.h
    trunk/src/keybindings.c
    trunk/src/main.c
    trunk/src/sci_cb.h
Modified: trunk/src/callbacks.c
===================================================================
--- trunk/src/callbacks.c	2006-06-24 18:43:56 UTC (rev 476)
+++ trunk/src/callbacks.c	2006-06-24 18:46:08 UTC (rev 477)
@@ -356,6 +356,7 @@
                                         gpointer         user_data)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;
 	if (sci_can_undo(doc_list[idx].sci)) sci_undo(doc_list[idx].sci);
 }
 
@@ -365,6 +366,7 @@
                                         gpointer         user_data)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;
 	if (sci_can_redo(doc_list[idx].sci)) sci_redo(doc_list[idx].sci);
 }
 
@@ -454,8 +456,11 @@
                                         gpointer         user_data)
 {
 	gint idx = document_get_cur_idx();
-	gchar *basename = g_path_get_basename(doc_list[idx].file_name);
+	gchar *basename;
 
+	if (idx == -1 || ! doc_list[idx].is_valid || doc_list[idx].file_name == NULL) return;
+	
+	basename = g_path_get_basename(doc_list[idx].file_name);
 	if (dialogs_show_question(_
 				 ("Are you sure you want to reload '%s'?\nAny unsaved changes will be lost."),
 				 basename))
@@ -605,7 +610,7 @@
 	gint idx = document_get_cur_idx();
 	static gboolean done = 1;
 
-	if (doc_list[idx].is_valid)
+	if (idx >= 0 && doc_list[idx].is_valid)
 	{
 		if (done++ % 3 == 0) sci_set_line_numbers(doc_list[idx].sci, app->show_linenumber_margin,
 				(sci_get_zoom(doc_list[idx].sci) / 2));
@@ -619,7 +624,7 @@
                                          gpointer         user_data)
 {
 	gint idx = document_get_cur_idx();
-	if (doc_list[idx].is_valid)
+	if (idx >= 0 && doc_list[idx].is_valid)
 	{
 		if (sci_get_zoom(doc_list[idx].sci) == 0)
 			sci_set_line_numbers(doc_list[idx].sci, app->show_linenumber_margin, 0);
@@ -633,7 +638,7 @@
                                         gpointer         user_data)
 {
 	gint idx = document_get_cur_idx();
-	if (doc_list[idx].is_valid)
+	if (idx >= 0 && doc_list[idx].is_valid)
 	{
 		sci_zoom_off(doc_list[idx].sci);
 		sci_set_line_numbers(doc_list[idx].sci, app->show_linenumber_margin, 0);
@@ -2390,4 +2395,3 @@
 	utils_update_statusbar(idx, -1);
 }
 
-

Modified: trunk/src/dialogs.c
===================================================================
--- trunk/src/dialogs.c	2006-06-24 18:43:56 UTC (rev 476)
+++ trunk/src/dialogs.c	2006-06-24 18:46:08 UTC (rev 477)
@@ -487,7 +487,7 @@
 						G_CALLBACK(gtk_widget_hide), NULL);
 	}
 	// We make sure the dialog is visible.
-	gtk_window_present (GTK_WINDOW(app->open_colorsel));
+	gtk_window_present(GTK_WINDOW(app->open_colorsel));
 #endif
 }
 
@@ -879,6 +879,8 @@
 	gint idx = document_get_cur_idx();
 	gchar *sel = NULL;
 
+	if (idx == -1 || ! doc_list[idx].is_valid) return;
+	
 	if (sci_get_lines_selected(doc_list[idx].sci) == 1)
 	{
 		sel = g_malloc(sci_get_selected_text_length(doc_list[idx].sci));

Modified: trunk/src/geany.h
===================================================================
--- trunk/src/geany.h	2006-06-24 18:43:56 UTC (rev 476)
+++ trunk/src/geany.h	2006-06-24 18:46:08 UTC (rev 477)
@@ -205,7 +205,7 @@
 	GtkWidget			*redo_items[2];
 	GtkWidget			*undo_items[2];
 	GtkWidget			*save_buttons[2];
-	GtkWidget			*sensitive_buttons[31];
+	GtkWidget			*sensitive_buttons[32];
 	GtkWidget			*open_colorsel;
 	GtkWidget			*open_fontsel;
 	GtkWidget			*open_filesel;

Modified: trunk/src/keybindings.c
===================================================================
--- trunk/src/keybindings.c	2006-06-24 18:43:56 UTC (rev 476)
+++ trunk/src/keybindings.c	2006-06-24 18:46:08 UTC (rev 477)
@@ -340,7 +340,6 @@
 			return TRUE;
 		}
 	}
-
 	return FALSE;
 }
 
@@ -464,18 +463,21 @@
 static void cb_func_menu_foldall(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	document_fold_all(idx);
 }
 
 static void cb_func_menu_unfoldall(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	document_unfold_all(idx);
 }
 
 static void cb_func_build_compile(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (doc_list[idx].file_type->menu_items->can_compile && doc_list[idx].file_name != NULL)
 		on_build_compile_activate(NULL, NULL);
 }
@@ -483,6 +485,7 @@
 static void cb_func_build_link(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (doc_list[idx].file_type->menu_items->can_link && doc_list[idx].file_name != NULL)
 		on_build_build_activate(NULL, NULL);
 }
@@ -490,6 +493,7 @@
 static void cb_func_build_make(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (doc_list[idx].file_name != NULL)
 		on_build_make_activate(NULL, GINT_TO_POINTER(0));
 }
@@ -497,6 +501,7 @@
 static void cb_func_build_makeowntarget(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (doc_list[idx].file_name != NULL)
 		on_build_make_activate(NULL, GINT_TO_POINTER(1));
 }
@@ -504,6 +509,7 @@
 static void cb_func_build_run(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (doc_list[idx].file_type->menu_items->can_exec && doc_list[idx].file_name != NULL)
 		on_build_execute_activate(NULL, GINT_TO_POINTER(0));
 }
@@ -511,6 +517,7 @@
 static void cb_func_build_run2(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (doc_list[idx].file_type->menu_items->can_exec && doc_list[idx].file_name != NULL)
 		on_build_execute_activate(NULL, GINT_TO_POINTER(1));
 }
@@ -518,6 +525,7 @@
 static void cb_func_build_options(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if ((doc_list[idx].file_type->menu_items->can_compile ||
 		doc_list[idx].file_type->menu_items->can_link ||
 		doc_list[idx].file_type->menu_items->can_exec) &&
@@ -528,6 +536,7 @@
 static void cb_func_reloadtaglist(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	document_update_tag_list(idx, TRUE);
 }
 
@@ -585,6 +594,7 @@
 static void cb_func_switch_editor(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	gtk_widget_grab_focus(GTK_WIDGET(doc_list[idx].sci));
 }
 
@@ -641,6 +651,7 @@
 static void cb_func_edit_duplicateline(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	if (sci_can_copy(doc_list[idx].sci))
 		sci_selection_duplicate(doc_list[idx].sci);
 	else
@@ -650,30 +661,35 @@
 static void cb_func_edit_commentline(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	sci_cb_do_comment(idx);
 }
 
 static void cb_func_edit_autocomplete(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	sci_cb_start_auto_complete(doc_list[idx].sci, sci_get_current_position(doc_list[idx].sci));
 }
 
 static void cb_func_edit_calltip(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	sci_cb_show_calltip(doc_list[idx].sci, -1);
 }
 
 static void cb_func_edit_macrolist(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	sci_cb_show_macro_list(doc_list[idx].sci);
 }
 
 static void cb_func_edit_suppresscompletion(void)
 {
 	gint idx = document_get_cur_idx();
+	if (idx == -1 || ! doc_list[idx].is_valid) return;	
 	sci_add_text(doc_list[idx].sci, " ");
 }
 

Modified: trunk/src/main.c
===================================================================
--- trunk/src/main.c	2006-06-24 18:43:56 UTC (rev 476)
+++ trunk/src/main.c	2006-06-24 18:46:08 UTC (rev 477)
@@ -291,21 +291,22 @@
 	app->sensitive_buttons[13] = lookup_widget(app->window, "menu_count_words1");
 	app->sensitive_buttons[14] = lookup_widget(app->window, "menu_build1");
 	app->sensitive_buttons[15] = lookup_widget(app->window, "add_comments1");
-	app->sensitive_buttons[16] = lookup_widget(app->window, "find1");
-	app->sensitive_buttons[17] = lookup_widget(app->window, "find_next1");
-	app->sensitive_buttons[18] = lookup_widget(app->window, "replace1");
-	app->sensitive_buttons[19] = lookup_widget(app->window, "menu_paste1");
-	app->sensitive_buttons[20] = lookup_widget(app->window, "menu_undo2");
-	app->sensitive_buttons[21] = lookup_widget(app->window, "preferences2");
-	app->sensitive_buttons[22] = lookup_widget(app->window, "revert1");
-	app->sensitive_buttons[23] = lookup_widget(app->window, "menu_item4");
-	app->sensitive_buttons[24] = lookup_widget(app->window, "menu_markers_margin1");
-	app->sensitive_buttons[25] = lookup_widget(app->window, "menu_linenumber_margin1");
-	app->sensitive_buttons[26] = lookup_widget(app->window, "menu_choose_color1");
-	app->sensitive_buttons[27] = lookup_widget(app->window, "menu_zoom_in1");
-	app->sensitive_buttons[28] = lookup_widget(app->window, "menu_zoom_out1");
-	app->sensitive_buttons[29] = lookup_widget(app->window, "normal_size1");
-	app->sensitive_buttons[30] = lookup_widget(app->window, "toolbutton24");
+	app->sensitive_buttons[16] = lookup_widget(app->window, "search1");
+	app->sensitive_buttons[17] = lookup_widget(app->window, "menu_paste1");
+	app->sensitive_buttons[18] = lookup_widget(app->window, "menu_undo2");
+	app->sensitive_buttons[19] = lookup_widget(app->window, "preferences2");
+	app->sensitive_buttons[20] = lookup_widget(app->window, "revert1");
+	app->sensitive_buttons[21] = lookup_widget(app->window, "menu_item4");
+	app->sensitive_buttons[22] = lookup_widget(app->window, "menu_markers_margin1");
+	app->sensitive_buttons[23] = lookup_widget(app->window, "menu_linenumber_margin1");
+	app->sensitive_buttons[24] = lookup_widget(app->window, "menu_choose_color1");
+	app->sensitive_buttons[25] = lookup_widget(app->window, "menu_zoom_in1");
+	app->sensitive_buttons[26] = lookup_widget(app->window, "menu_zoom_out1");
+	app->sensitive_buttons[27] = lookup_widget(app->window, "normal_size1");
+	app->sensitive_buttons[28] = lookup_widget(app->window, "toolbutton24");
+	app->sensitive_buttons[29] = lookup_widget(app->window, "toolbutton25");
+	app->sensitive_buttons[30] = lookup_widget(app->window, "entry_goto_line");
+	app->sensitive_buttons[31] = lookup_widget(app->window, "treeview6");
 	app->redo_items[0] = lookup_widget(app->popup_menu, "redo1");
 	app->redo_items[1] = lookup_widget(app->window, "menu_redo2");
 	app->undo_items[0] = lookup_widget(app->popup_menu, "undo1");

Modified: trunk/src/sci_cb.h
===================================================================
--- trunk/src/sci_cb.h	2006-06-24 18:43:56 UTC (rev 476)
+++ trunk/src/sci_cb.h	2006-06-24 18:46:08 UTC (rev 477)
@@ -40,8 +40,6 @@
 
 gboolean sci_cb_handle_xml(ScintillaObject *sci, gchar ch);
 
-gboolean sci_cb_handle_uri(ScintillaObject *sci, gint pos);
-
 gboolean sci_cb_show_calltip(ScintillaObject *sci, gint pos);
 
 void sci_cb_do_comment(gint idx);


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