avdtputil: fix GError memory leak during failures

https://bugzilla.gnome.org/show_bug.cgi?id=755142
This commit is contained in:
Vineeth T M 2015-09-17 13:47:23 +09:00 committed by Sebastian Dröge
parent 00438fdff0
commit e98addcc31

View file

@ -99,6 +99,7 @@ gst_avdtp_connection_acquire (GstAvdtpConnection * conn, gboolean use_try)
if (conn->data.conn == NULL) { if (conn->data.conn == NULL) {
GST_ERROR ("Failed to create proxy for media transport: %s", GST_ERROR ("Failed to create proxy for media transport: %s",
err && err->message ? err->message : "Unknown error"); err && err->message ? err->message : "Unknown error");
g_clear_error (&err);
return FALSE; return FALSE;
} }
@ -154,11 +155,14 @@ gst_avdtp_connection_transport_release (GstAvdtpConnection * conn)
if (!bluez_media_transport1_call_release_sync (conn->data.conn, NULL, &err)) { if (!bluez_media_transport1_call_release_sync (conn->data.conn, NULL, &err)) {
/* We don't care about errors if the transport was already marked stale */ /* We don't care about errors if the transport was already marked stale */
if (!conn->data.is_acquired) if (!conn->data.is_acquired) {
g_clear_error (&err);
return; return;
}
GST_ERROR ("Failed to release transport stream: %s", err->message ? GST_ERROR ("Failed to release transport stream: %s", err->message ?
err->message : "unknown error"); err->message : "unknown error");
g_clear_error (&err);
} }
conn->data.is_acquired = FALSE; conn->data.is_acquired = FALSE;
} }
@ -724,7 +728,6 @@ gboolean
gst_avdtp_connection_conf_recv_stream_fd (GstAvdtpConnection * conn) gst_avdtp_connection_conf_recv_stream_fd (GstAvdtpConnection * conn)
{ {
struct bluetooth_data *data = &conn->data; struct bluetooth_data *data = &conn->data;
GError *gerr = NULL;
GIOStatus status; GIOStatus status;
GIOFlags flags; GIOFlags flags;
int fd; int fd;
@ -740,7 +743,7 @@ gst_avdtp_connection_conf_recv_stream_fd (GstAvdtpConnection * conn)
/* set stream socket to nonblock */ /* set stream socket to nonblock */
flags = g_io_channel_get_flags (conn->stream); flags = g_io_channel_get_flags (conn->stream);
flags |= G_IO_FLAG_NONBLOCK; flags |= G_IO_FLAG_NONBLOCK;
status = g_io_channel_set_flags (conn->stream, flags, &gerr); status = g_io_channel_set_flags (conn->stream, flags, NULL);
if (status != G_IO_STATUS_NORMAL) if (status != G_IO_STATUS_NORMAL)
GST_WARNING ("Error while setting server socket to nonblock"); GST_WARNING ("Error while setting server socket to nonblock");
@ -757,7 +760,7 @@ gst_avdtp_connection_conf_recv_stream_fd (GstAvdtpConnection * conn)
/* set stream socket to block */ /* set stream socket to block */
flags = g_io_channel_get_flags (conn->stream); flags = g_io_channel_get_flags (conn->stream);
flags &= ~G_IO_FLAG_NONBLOCK; flags &= ~G_IO_FLAG_NONBLOCK;
status = g_io_channel_set_flags (conn->stream, flags, &gerr); status = g_io_channel_set_flags (conn->stream, flags, NULL);
if (status != G_IO_STATUS_NORMAL) if (status != G_IO_STATUS_NORMAL)
GST_WARNING ("Error while setting server socket to block"); GST_WARNING ("Error while setting server socket to block");