[libsoup] Use g_ptr_array_new_with_free_func()



commit dba99c7857d42189201f30ddcf77ed9962f2df31
Author: Dan Winship <danw gnome org>
Date:   Mon Jul 2 10:18:18 2012 -0400

    Use g_ptr_array_new_with_free_func()

 libsoup/soup-auth-manager.c |    6 +-----
 libsoup/soup-multipart.c    |   10 ++--------
 libsoup/soup-session.c      |   11 ++++-------
 3 files changed, 7 insertions(+), 20 deletions(-)
---
diff --git a/libsoup/soup-auth-manager.c b/libsoup/soup-auth-manager.c
index 2711d9a..6d845be 100644
--- a/libsoup/soup-auth-manager.c
+++ b/libsoup/soup-auth-manager.c
@@ -70,7 +70,7 @@ soup_auth_manager_init (SoupAuthManager *manager)
 {
 	SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER_GET_PRIVATE (manager);
 
-	priv->auth_types = g_ptr_array_new ();
+	priv->auth_types = g_ptr_array_new_with_free_func ((GDestroyNotify)g_type_class_unref);
 	priv->auth_hosts = g_hash_table_new_full (soup_uri_host_hash,
 						  soup_uri_host_equal,
 						  NULL,
@@ -81,10 +81,7 @@ static void
 finalize (GObject *object)
 {
 	SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER_GET_PRIVATE (object);
-	int i;
 
-	for (i = 0; i < priv->auth_types->len; i++)
-		g_type_class_unref (priv->auth_types->pdata[i]);
 	g_ptr_array_free (priv->auth_types, TRUE);
 
 	g_hash_table_destroy (priv->auth_hosts);
@@ -172,7 +169,6 @@ remove_feature (SoupSessionFeature *feature, GType type)
 	for (i = 0; i < priv->auth_types->len; i++) {
 		if (priv->auth_types->pdata[i] == (gpointer)auth_class) {
 			g_ptr_array_remove_index (priv->auth_types, i);
-			g_type_class_unref (auth_class);
 			return TRUE;
 		}
 	}
diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
index ee99920..6469490 100644
--- a/libsoup/soup-multipart.c
+++ b/libsoup/soup-multipart.c
@@ -48,8 +48,8 @@ soup_multipart_new_internal (char *mime_type, char *boundary)
 	multipart = g_slice_new (SoupMultipart);
 	multipart->mime_type = mime_type;
 	multipart->boundary = boundary;
-	multipart->headers = g_ptr_array_new ();
-	multipart->bodies = g_ptr_array_new ();
+	multipart->headers = g_ptr_array_new_with_free_func ((GDestroyNotify)soup_message_headers_free);
+	multipart->bodies = g_ptr_array_new_with_free_func ((GDestroyNotify)soup_buffer_free);
 
 	return multipart;
 }
@@ -464,15 +464,9 @@ soup_multipart_to_message (SoupMultipart *multipart,
 void
 soup_multipart_free (SoupMultipart *multipart)
 {
-	int i;
-
 	g_free (multipart->mime_type);
 	g_free (multipart->boundary);
-	for (i = 0; i < multipart->headers->len; i++)
-		soup_message_headers_free (multipart->headers->pdata[i]);
 	g_ptr_array_free (multipart->headers, TRUE);
-	for (i = 0; i < multipart->bodies->len; i++)
-		soup_buffer_free (multipart->bodies->pdata[i]);
 	g_ptr_array_free (multipart->bodies, TRUE);
 
 	g_slice_free (SoupMultipart, multipart);
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index 0fb9b03..ef28892 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -1017,7 +1017,7 @@ accept_languages_from_system (void)
 {
 	const char * const * lang_names;
 	GPtrArray *langs = NULL;
-	char *lang, **langs_array, *langs_str;
+	char *lang, *langs_str;
 	int delta;
 	int i;
 
@@ -1025,7 +1025,7 @@ accept_languages_from_system (void)
 	g_return_val_if_fail (lang_names != NULL, NULL);
 
 	/* Build the array of languages */
-	langs = g_ptr_array_new ();
+	langs = g_ptr_array_new_with_free_func (g_free);
 	for (i = 0; lang_names[i] != NULL; i++) {
 		lang = posix_lang_to_rfc2616 (lang_names[i]);
 		if (lang)
@@ -1051,11 +1051,8 @@ accept_languages_from_system (void)
 		g_ptr_array_add (langs, g_strdup ("en"));
 
 	g_ptr_array_add (langs, NULL);
-	langs_array = (char **)langs->pdata;
-	langs_str = g_strjoinv (", ", langs_array);
-
-	g_strfreev (langs_array);
-	g_ptr_array_free (langs, FALSE);
+	langs_str = g_strjoinv (", ", (char **)langs->pdata);
+	g_ptr_array_free (langs, TRUE);
 
 	return langs_str;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]