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.