[libsoup] libsoup: leak fixes and other valgrindage
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup] libsoup: leak fixes and other valgrindage
- Date: Tue, 3 Mar 2015 03:01:40 +0000 (UTC)
commit 1c3983f6d0b4097492963f57dd1453f32616c3a3
Author: Dan Winship <danw gnome org>
Date: Mon Mar 2 21:27:49 2015 -0500
libsoup: leak fixes and other valgrindage
libsoup/soup-auth.c | 2 ++
libsoup/soup-cache-input-stream.c | 1 +
libsoup/soup-connection.c | 6 ++++++
libsoup/soup-message-io.c | 14 ++++++++++----
4 files changed, 19 insertions(+), 4 deletions(-)
---
diff --git a/libsoup/soup-auth.c b/libsoup/soup-auth.c
index 3c64522..49d8df2 100644
--- a/libsoup/soup-auth.c
+++ b/libsoup/soup-auth.c
@@ -80,9 +80,11 @@ soup_auth_set_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_REALM:
+ g_free (auth->realm);
auth->realm = g_value_dup_string (value);
break;
case PROP_HOST:
+ g_free (priv->host);
priv->host = g_value_dup_string (value);
break;
case PROP_IS_FOR_PROXY:
diff --git a/libsoup/soup-cache-input-stream.c b/libsoup/soup-cache-input-stream.c
index 679531d..26bf52e 100644
--- a/libsoup/soup-cache-input-stream.c
+++ b/libsoup/soup-cache-input-stream.c
@@ -56,6 +56,7 @@ notify_and_clear (SoupCacheInputStream *istream, GError *error)
g_clear_object (&priv->cancellable);
g_clear_object (&priv->output_stream);
+ g_clear_error (&error);
}
static inline void
diff --git a/libsoup/soup-connection.c b/libsoup/soup-connection.c
index de897ac..123f85e 100644
--- a/libsoup/soup-connection.c
+++ b/libsoup/soup-connection.c
@@ -70,6 +70,12 @@ soup_connection_finalize (GObject *object)
g_clear_pointer (&priv->remote_uri, soup_uri_free);
g_clear_pointer (&priv->proxy_uri, soup_uri_free);
g_clear_pointer (&priv->socket_props, soup_socket_properties_unref);
+ g_clear_object (&priv->current_msg);
+
+ if (priv->socket) {
+ g_signal_handlers_disconnect_by_data (priv->socket, object);
+ g_object_unref (priv->socket);
+ }
G_OBJECT_CLASS (soup_connection_parent_class)->finalize (object);
}
diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c
index bec3e34..f7ae436 100644
--- a/libsoup/soup-message-io.c
+++ b/libsoup/soup-message-io.c
@@ -125,6 +125,12 @@ soup_message_io_cleanup (SoupMessage *msg)
if (io->write_chunk)
soup_buffer_free (io->write_chunk);
+ if (io->async_close_wait) {
+ g_cancellable_cancel (io->async_close_wait);
+ g_clear_object (&io->async_close_wait);
+ }
+ g_clear_error (&io->async_close_error);
+
g_slice_free (SoupMessageIOData, io);
}
@@ -993,16 +999,16 @@ io_run_until (SoupMessage *msg, gboolean blocking,
g_propagate_error (error, my_error);
g_object_unref (msg);
return FALSE;
- } else if (!io->async_close_wait &&
- g_cancellable_set_error_if_cancelled (cancellable, error)) {
- g_object_unref (msg);
- return FALSE;
} else if (priv->io_data != io) {
g_set_error_literal (error, G_IO_ERROR,
G_IO_ERROR_CANCELLED,
_("Operation was cancelled"));
g_object_unref (msg);
return FALSE;
+ } else if (!io->async_close_wait &&
+ g_cancellable_set_error_if_cancelled (cancellable, error)) {
+ g_object_unref (msg);
+ return FALSE;
}
done = (io->read_state >= read_state &&
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]