diff options
-rw-r--r-- | mail/ChangeLog | 10 | ||||
-rw-r--r-- | mail/component-factory.c | 40 | ||||
-rw-r--r-- | mail/folder-browser-ui.c | 10 |
3 files changed, 16 insertions, 44 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index 3ca7d54b0b..a7e1a285dc 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -1,3 +1,13 @@ +2003-05-13 Ettore Perazzoli <ettore@ximian.com> + + * component-factory.c (segv_redirect): Removed. + (make_factory): No need to set up the SIGSEGV redirect handler + here, since it's already done in the shell now, and it's in-proc. + + * folder-browser-ui.c (folder_browser_ui_rm_all): Only do the + bonobo_ui_component() stuff if the component does have a + container. + 2003-05-08 Ettore Perazzoli <ettore@ximian.com> * mail-session.c (mail_session_set_interactive): Set the diff --git a/mail/component-factory.c b/mail/component-factory.c index a97926a03f..b2bc053cad 100644 --- a/mail/component-factory.c +++ b/mail/component-factory.c @@ -1612,31 +1612,6 @@ factory (BonoboGenericFactory *factory, return NULL; } -/* The GNOME SEGV handler will lose if it's not run from the main Gtk - * thread. So if we crash in another thread, redirect the signal. - */ -static void (*gnome_segv_handler) (int); - -static GStaticMutex segv_mutex = G_STATIC_MUTEX_INIT; - -static void -segv_redirect (int sig) -{ - if (pthread_self () == mail_gui_thread) - gnome_segv_handler (sig); - else { - pthread_kill (mail_gui_thread, sig); - /* We can't return from the signal handler or the - * thread may SEGV again. But we can't pthread_exit, - * because then the thread may get cleaned up before - * bug-buddy can get a stack trace. So we block by - * trying to lock a mutex we know is already locked. - */ - g_static_mutex_lock (&segv_mutex); - } -} - - static Bonobo_Unknown make_factory (PortableServer_POA poa, const char *iid, gpointer impl_ptr, CORBA_Environment *ev) { @@ -1644,21 +1619,6 @@ make_factory (PortableServer_POA poa, const char *iid, gpointer impl_ptr, CORBA_ static int init = 0; if (!init) { - sigaction (SIGSEGV, NULL, &osa); - if (osa.sa_handler != SIG_DFL) { - sa.sa_flags = 0; - sigemptyset (&sa.sa_mask); - sa.sa_handler = segv_redirect; - sigaction (SIGSEGV, &sa, NULL); - sigaction (SIGBUS, &sa, NULL); - sigaction (SIGFPE, &sa, NULL); - - sa.sa_handler = SIG_IGN; - sigaction (SIGXFSZ, &sa, NULL); - gnome_segv_handler = osa.sa_handler; - g_static_mutex_lock (&segv_mutex); - } - /* init ? */ mail_config_init (); mail_msg_init (); diff --git a/mail/folder-browser-ui.c b/mail/folder-browser-ui.c index 18aecd234f..3f570b963d 100644 --- a/mail/folder-browser-ui.c +++ b/mail/folder-browser-ui.c @@ -649,10 +649,12 @@ void folder_browser_ui_rm_all (FolderBrowser *fb) { BonoboUIComponent *uic = fb->uicomp; - - bonobo_ui_component_rm (uic, "/", NULL); - bonobo_ui_component_unset_container (uic, NULL); - + + if (bonobo_ui_component_get_container (uic) != NULL) { + bonobo_ui_component_rm (uic, "/", NULL); + bonobo_ui_component_unset_container (uic, NULL); + } + if (fb->sensitise_state) { g_hash_table_destroy (fb->sensitise_state); fb->sensitise_state = NULL; |