diff options
author | John Sullivan <sullivan@src.gnome.org> | 2000-08-08 15:42:49 +0000 |
---|---|---|
committer | John Sullivan <sullivan@src.gnome.org> | 2000-08-08 15:42:49 +0000 |
commit | 9361f5f063407c4348aa59e2c4c4090b71029262 (patch) | |
tree | cccf2ed10d691077aec46ac86ad83e96bfcea843 /libnautilus-private | |
parent | 7b38182cdf1b42076940d17046b99f4358287765 (diff) | |
download | nautilus-9361f5f063407c4348aa59e2c4c4090b71029262.tar.gz |
Fixed real and potential memory leaks involving
nautilus_directory_wait_until_ready.
* libnautilus-extensions/nautilus-mime-actions.c:
(nautilus_directory_wait_for_metadata): New function,
calls _wait_until_ready with no attributes and
TRUE for metadata, then frees result. The result as
currently implemented will always be NULL in this case
but there's no guarantee of that so it's safer to free
the result.
(nautilus_mime_get_default_action_type_for_uri),
(nautilus_mime_get_default_application_for_uri_internal),
(nautilus_mime_get_short_list_applications_for_uri),
(nautilus_mime_get_all_applications_for_uri),
(nautilus_mime_set_default_action_type_for_uri),
(nautilus_mime_set_default_application_for_uri),
(nautilus_mime_set_default_component_for_uri),
(nautilus_mime_set_short_list_applications_for_uri),
(nautilus_mime_set_short_list_components_for_uri),
(nautilus_mime_extend_all_applications_for_uri),
(nautilus_mime_remove_from_all_applications_for_uri):
Use nautilus_directory_wait_for_metadata.
(nautilus_mime_get_default_component_for_uri_internal),
(nautilus_mime_get_all_components_for_uri): free results
of nautilus_directory_wait_until_ready.
(nautilus_mime_get_short_list_components_for_uri): free
results of nautilus_directory_wait_until_ready, also
removed extra call to _wait_until_ready.
Diffstat (limited to 'libnautilus-private')
-rw-r--r-- | libnautilus-private/nautilus-mime-actions.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/libnautilus-private/nautilus-mime-actions.c b/libnautilus-private/nautilus-mime-actions.c index 0c8459eca..749b48f70 100644 --- a/libnautilus-private/nautilus-mime-actions.c +++ b/libnautilus-private/nautilus-mime-actions.c @@ -70,7 +70,19 @@ static char *get_mime_type_from_uri (const char static int strv_length (char **a); static char **strv_concat (char **a, char **b); +static void +nautilus_directory_wait_for_metadata (NautilusDirectory *directory) +{ + GList *file_list; + /* When nautilus_directory_wait_until_ready is called this way, it + * currently returns NULL. So theoretically we don't have to free + * the result. But there's no guarantee that this behavior won't + * change, so it's safer to free the result. + */ + file_list = nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_file_list_free (file_list); +} GnomeVFSMimeActionType nautilus_mime_get_default_action_type_for_uri (const char *uri) @@ -81,7 +93,7 @@ nautilus_mime_get_default_action_type_for_uri (const char *uri) GnomeVFSMimeActionType action_type; directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); action_type_string = nautilus_directory_get_metadata (directory, NAUTILUS_METADATA_KEY_DEFAULT_ACTION_TYPE, NULL); nautilus_directory_unref (directory); @@ -159,7 +171,7 @@ nautilus_mime_get_default_application_for_uri_internal (const char *uri, gboolea directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); default_application_string = nautilus_directory_get_metadata (directory, NAUTILUS_METADATA_KEY_DEFAULT_APPLICATION, NULL); nautilus_directory_unref (directory); @@ -326,7 +338,6 @@ nautilus_mime_get_default_component_for_uri_internal (const char *uri, gboolean info_list = nautilus_do_component_query (mime_type, uri_scheme, files, explicit_iids, sort_conditions, NULL, &ev); - if (ev._major == CORBA_NO_EXCEPTION && info_list != NULL) { server = OAF_ServerInfo_duplicate (info_list->data); @@ -346,6 +357,7 @@ nautilus_mime_get_default_component_for_uri_internal (const char *uri, gboolean g_assert_not_reached (); } + nautilus_file_list_free (files); g_free (sort_conditions[0]); g_free (sort_conditions[1]); g_free (sort_conditions[2]); @@ -409,7 +421,7 @@ nautilus_mime_get_short_list_applications_for_uri (const char *uri) directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); metadata_application_add_ids = nautilus_directory_get_metadata_list (directory, NAUTILUS_METADATA_KEY_SHORT_LIST_APPLICATION_ADD, NAUTILUS_METADATA_SUBKEY_APPLICATION_ID); metadata_application_remove_ids = nautilus_directory_get_metadata_list @@ -481,7 +493,6 @@ nautilus_mime_get_short_list_components_for_uri (const char *uri) explicit_iids = get_explicit_content_view_iids_from_metafile (directory); g_list_free (attributes); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); metadata_component_add_ids = nautilus_directory_get_metadata_list (directory, NAUTILUS_METADATA_KEY_SHORT_LIST_COMPONENT_ADD, NAUTILUS_METADATA_SUBKEY_COMPONENT_IID); metadata_component_remove_ids = nautilus_directory_get_metadata_list @@ -537,6 +548,7 @@ nautilus_mime_get_short_list_components_for_uri (const char *uri) g_free (extra_requirements); } + nautilus_file_list_free (files); gnome_vfs_mime_component_list_free (servers); g_list_free (iids); g_free (uri_scheme); @@ -571,7 +583,7 @@ nautilus_mime_get_all_applications_for_uri (const char *uri) directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); metadata_application_ids = nautilus_directory_get_metadata_list (directory, NAUTILUS_METADATA_KEY_EXPLICIT_APPLICATION, NAUTILUS_METADATA_SUBKEY_APPLICATION_ID); nautilus_directory_unref (directory); @@ -646,6 +658,7 @@ nautilus_mime_get_all_components_for_uri (const char *uri) info_list = nautilus_do_component_query (mime_type, uri_scheme, files, explicit_iids, NULL, NULL, &ev); + nautilus_file_list_free (files); g_free (uri_scheme); g_free (mime_type); CORBA_exception_free (&ev); @@ -687,7 +700,7 @@ nautilus_mime_set_default_action_type_for_uri (const char *uri, directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); nautilus_directory_set_metadata (directory, NAUTILUS_METADATA_KEY_DEFAULT_ACTION_TYPE, NULL, action_string); nautilus_directory_unref (directory); @@ -703,7 +716,7 @@ nautilus_mime_set_default_application_for_uri (const char *uri, directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); nautilus_directory_set_metadata (directory, NAUTILUS_METADATA_KEY_DEFAULT_APPLICATION, NULL, application_id); nautilus_directory_unref (directory); @@ -725,7 +738,7 @@ nautilus_mime_set_default_component_for_uri (const char *uri, directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); nautilus_directory_set_metadata (directory, NAUTILUS_METADATA_KEY_DEFAULT_COMPONENT, NULL, component_iid); nautilus_directory_unref (directory); @@ -769,7 +782,7 @@ nautilus_mime_set_short_list_applications_for_uri (const char *uri, directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); nautilus_directory_set_metadata_list (directory, NAUTILUS_METADATA_KEY_SHORT_LIST_APPLICATION_ADD, NAUTILUS_METADATA_SUBKEY_APPLICATION_ID, add_list); nautilus_directory_set_metadata_list @@ -813,7 +826,7 @@ nautilus_mime_set_short_list_components_for_uri (const char *uri, directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); nautilus_directory_set_metadata_list (directory, NAUTILUS_METADATA_KEY_SHORT_LIST_COMPONENT_ADD, NAUTILUS_METADATA_SUBKEY_COMPONENT_IID, add_list); nautilus_directory_set_metadata_list @@ -931,7 +944,7 @@ nautilus_mime_extend_all_applications_for_uri (const char *uri, GList *final_applications; directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); metadata_application_ids = nautilus_directory_get_metadata_list (directory, @@ -962,7 +975,7 @@ nautilus_mime_remove_from_all_applications_for_uri (const char *uri, GList *final_applications; directory = nautilus_directory_get (uri); - nautilus_directory_wait_until_ready (directory, NULL, TRUE); + nautilus_directory_wait_for_metadata (directory); metadata_application_ids = nautilus_directory_get_metadata_list (directory, |