Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:dliang
nautilus
nautilus-208834-handle-metafile-corba-errors.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File nautilus-208834-handle-metafile-corba-errors.diff of Package nautilus
Patch from http://bugzilla.gnome.org/show_bug.cgi?id=46664 Handle CORBA errors in the metafile code. This should deal with crashes in gnome-vfs-daemon better. See https://bugzilla.novell.com/show_bug.cgi?id=208834 --- nautilus/libnautilus-private/nautilus-directory-metafile.c.orig 2006-10-03 10:46:37.000000000 -0500 +++ nautilus/libnautilus-private/nautilus-directory-metafile.c 2006-10-03 10:47:18.000000000 -0500 @@ -179,8 +179,12 @@ nautilus_directory_is_metadata_read (Nau } result = Nautilus_Metafile_is_read (metafile, &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + result = TRUE; + g_debug ("CORBA exception when determining whether metafile is read: %s", + CORBA_exception_id (&ev)); + } - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ CORBA_exception_free (&ev); return result; @@ -216,7 +220,7 @@ nautilus_directory_get_file_metadata (Na corba_value = Nautilus_Metafile_get (metafile, file_name, key, non_null_default, &ev); if (ev._major != CORBA_NO_EXCEPTION) { - g_warning ("Failed to get file metadata."); + g_debug ("CORBA exception when getting file metadata: %s", CORBA_exception_id (&ev)); CORBA_exception_free (&ev); return g_strdup (default_metadata); } @@ -263,8 +267,12 @@ nautilus_directory_get_file_metadata_lis CORBA_exception_init (&ev); corba_value = Nautilus_Metafile_get_list (metafile, file_name, list_key, list_subkey, &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("Failed to get metafile list: %s\n", CORBA_exception_id (&ev)); + CORBA_exception_free (&ev); + return NULL; + } - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ CORBA_exception_free (&ev); result = NULL; @@ -310,7 +318,10 @@ nautilus_directory_set_file_metadata (Na Nautilus_Metafile_set (metafile, file_name, key, default_metadata, metadata, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when setting file metadata: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); } @@ -363,7 +374,10 @@ nautilus_directory_set_file_metadata_lis Nautilus_Metafile_set_list (metafile, file_name, list_key, list_subkey, corba_list, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when setting file metadata list: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); CORBA_free (corba_list); @@ -381,15 +395,14 @@ nautilus_directory_get_boolean_file_meta result_as_string = nautilus_directory_get_file_metadata (directory, file_name, key, default_metadata ? "true" : "false"); + g_assert (result_as_string != NULL); if (g_ascii_strcasecmp (result_as_string, "true") == 0) { result = TRUE; } else if (g_ascii_strcasecmp (result_as_string, "false") == 0) { result = FALSE; } else { - if (result_as_string != NULL) { - g_warning ("boolean metadata with value other than true or false"); - } + g_error ("boolean metadata with value other than true or false"); result = default_metadata; } @@ -490,7 +503,10 @@ nautilus_directory_copy_file_metadata (N Nautilus_Metafile_copy (metafile, source_file_name, destination_uri, destination_file_name, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when copying file metadata: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); g_free (destination_uri); @@ -516,7 +532,10 @@ nautilus_directory_remove_file_metadata Nautilus_Metafile_remove (metafile, file_name, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when removing file metadata: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); } @@ -542,7 +561,10 @@ nautilus_directory_rename_file_metadata Nautilus_Metafile_rename (metafile, old_file_name, new_file_name, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when renaming file metadata: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); } @@ -566,7 +588,10 @@ nautilus_directory_rename_directory_meta Nautilus_Metafile_rename_directory (metafile, new_directory_uri, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when renaming directory metadata: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); } @@ -598,7 +623,10 @@ nautilus_directory_register_metadata_mon BONOBO_OBJREF (directory->details->metafile_monitor), &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when registering metadata monitor: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); } @@ -624,7 +652,10 @@ nautilus_directory_unregister_metadata_m BONOBO_OBJREF (directory->details->metafile_monitor), &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when unregistering metadata monitor: %s", CORBA_exception_id (&ev)); + } + CORBA_exception_free (&ev); bonobo_object_unref (directory->details->metafile_monitor); --- nautilus/libnautilus-private/nautilus-metafile.c.orig 2006-10-03 10:47:27.000000000 -0500 +++ nautilus/libnautilus-private/nautilus-metafile.c 2006-10-03 10:47:40.000000000 -0500 @@ -532,22 +532,34 @@ corba_rename_directory (PortableServer_S } static GList * -find_monitor_node (GList *monitors, const Nautilus_MetafileMonitor monitor) +find_monitor_node (GList *monitors, + const Nautilus_MetafileMonitor monitor, + CORBA_string *error) { GList *node; CORBA_Environment ev; Nautilus_MetafileMonitor cur_monitor; + g_assert (error != NULL); + *error = NULL; + CORBA_exception_init (&ev); for (node = monitors; node != NULL; node = node->next) { cur_monitor = node->data; - if (CORBA_Object_is_equivalent (cur_monitor, monitor, &ev)) { + gboolean equivalent; + + equivalent = CORBA_Object_is_equivalent (cur_monitor, monitor, &ev); + if (ev._major != CORBA_NO_EXCEPTION) { + node = NULL; + *error = CORBA_string_dup (CORBA_exception_id (&ev)); + break; + } + + if (equivalent) { break; } } - - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ CORBA_exception_free (&ev); @@ -560,10 +572,19 @@ corba_register_monitor (PortableServer_S CORBA_Environment *ev) { NautilusMetafile *metafile; + CORBA_string error; + gboolean found; metafile = NAUTILUS_METAFILE (bonobo_object_from_servant (servant)); - g_return_if_fail (find_monitor_node (metafile->details->monitors, monitor) == NULL); + found = find_monitor_node (metafile->details->monitors, monitor, &error) != NULL; + g_assert (!found || error != NULL); + + if (error != NULL) { + g_debug ("CORBA exception when finding monitor node during monitor registration: %s", error); + CORBA_free (error); + return; + } metafile->details->monitors = g_list_prepend (metafile->details->monitors, (gpointer) CORBA_Object_duplicate (monitor, ev)); @@ -578,12 +599,18 @@ corba_unregister_monitor (PortableServer { NautilusMetafile *metafile; GList *node; + CORBA_string error; metafile = NAUTILUS_METAFILE (bonobo_object_from_servant (servant)); - node = find_monitor_node (metafile->details->monitors, monitor); + node = find_monitor_node (metafile->details->monitors, monitor, &error); + g_assert (node != NULL || error != NULL); - g_return_if_fail (node != NULL); + if (error != NULL) { + g_debug ("CORBA exception when finding monitor node during monitor unregistration: %s", error); + CORBA_free (error); + return; + } metafile->details->monitors = g_list_remove_link (metafile->details->monitors, node); @@ -603,7 +630,9 @@ nautilus_metafile_notify_metafile_ready for (node = metafile->details->monitors; node != NULL; node = node->next) { monitor = node->data; Nautilus_MetafileMonitor_metafile_ready (monitor, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when notifying about ready metafile: %s", CORBA_exception_id (&ev)); + } } CORBA_exception_free (&ev); @@ -622,7 +651,9 @@ call_metafile_changed (NautilusMetafile for (node = metafile->details->monitors; node != NULL; node = node->next) { monitor = node->data; Nautilus_MetafileMonitor_metafile_changed (monitor, file_names, &ev); - /* FIXME bugzilla.gnome.org 46664: examine ev for errors */ + if (ev._major != CORBA_NO_EXCEPTION) { + g_debug ("CORBA exception when notifying about changed metafile: %s", CORBA_exception_id (&ev)); + } } CORBA_exception_free (&ev);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor