From b54245206418ca079d14c2d01baead4328eed11b Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Mon, 19 Mar 2001 17:47:37 +0000 Subject: Sigh. Fix a few really stupid crashes in EStorageSetView. svn path=/trunk/; revision=8826 --- shell/ChangeLog | 9 +++++++++ shell/e-storage-set-view.c | 34 +++++++++++++++++----------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/shell/ChangeLog b/shell/ChangeLog index 1f6dfbdad8..b66d3aacf4 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,12 @@ +2001-03-19 Ettore Perazzoli + + * e-storage-set-view.c (init): Ooops. Initialize the + `drag_corba_source_context' member. correctly. + (table_drag_begin): Don't crash if queryInterface returns + `CORBA_OBJECT_NIL'. + (table_drag_end): Don't do anything if the + `drag_corba_source_interface' is `CORBA_OBJECT_NIL'. + 2001-03-19 Ettore Perazzoli * e-storage-set-view.c New members `drag_data', diff --git a/shell/e-storage-set-view.c b/shell/e-storage-set-view.c index 35716d84e5..5ff80f01d9 100644 --- a/shell/e-storage-set-view.c +++ b/shell/e-storage-set-view.c @@ -742,7 +742,8 @@ table_drag_begin (ETable *etable, priv->drag_corba_source_interface = Bonobo_Unknown_queryInterface (corba_component, "IDL:GNOME/Evolution/ShellComponentDnd/SourceFolder:1.0", &ev); - if (ev._major != CORBA_NO_EXCEPTION) { + if (ev._major != CORBA_NO_EXCEPTION + || priv->drag_corba_source_interface == CORBA_OBJECT_NIL) { priv->drag_corba_source_interface = CORBA_OBJECT_NIL; CORBA_exception_free (&ev); @@ -791,6 +792,9 @@ table_drag_end (ETable *table, storage_set_view = E_STORAGE_SET_VIEW (table); priv = storage_set_view->priv; + if (priv->drag_corba_source_interface == CORBA_OBJECT_NIL) + return; + CORBA_exception_init (&ev); GNOME_Evolution_ShellComponentDnd_SourceFolder_endDrag (priv->drag_corba_source_interface, @@ -1341,25 +1345,21 @@ init (EStorageSetView *storage_set_view) priv = g_new (EStorageSetViewPrivate, 1); - priv->storage_set = NULL; - priv->path_to_etree_node = g_hash_table_new (g_str_hash, g_str_equal); - priv->type_name_to_pixbuf = g_hash_table_new (g_str_hash, g_str_equal); - priv->selected_row_path = NULL; - priv->show_folders = TRUE; - - priv->drag_corba_source_interface = CORBA_OBJECT_NIL; + priv->storage_set = NULL; + priv->path_to_etree_node = g_hash_table_new (g_str_hash, g_str_equal); + priv->type_name_to_pixbuf = g_hash_table_new (g_str_hash, g_str_equal); + priv->selected_row_path = NULL; + priv->show_folders = TRUE; - priv->drag_corba_source_context->physical_uri = NULL; - priv->drag_corba_source_context->folder_type = NULL; - priv->drag_corba_source_context->possible_actions = GNOME_Evolution_ShellComponentDnd_ACTION_DEFAULT; - priv->drag_corba_source_context->suggested_action = GNOME_Evolution_ShellComponentDnd_ACTION_DEFAULT; + priv->drag_corba_source_interface = CORBA_OBJECT_NIL; - priv->drag_corba_data = NULL; + priv->drag_corba_source_context = NULL; + priv->drag_corba_data = NULL; - priv->drag_x = 0; - priv->drag_y = 0; - priv->drag_column = 0; - priv->drag_row = 0; + priv->drag_x = 0; + priv->drag_y = 0; + priv->drag_column = 0; + priv->drag_row = 0; storage_set_view->priv = priv; } -- cgit