Hi, On Wed, Aug 03, 2016 at 09:49:51AM +0200, Christophe Fergeau wrote: > Rather than returning the whole ConnectAsyncData struct with > g_task_return_pointer(), we can return only the GIOStream object as this > is what we are interested in. > This has the side-effect of fixing a ConnectAsyncData leak as after > calling g_task_propagate_pointer() the old code had ownership of the > ConnectAsyncData instance but was never freeing it. > --- > src/wocky-http-proxy.c | 7 ++++--- > 1 file changed, 4 insertions(+), 3 deletions(-) > > diff --git a/src/wocky-http-proxy.c b/src/wocky-http-proxy.c > index f62f1fb..d1519b8 100644 > --- a/src/wocky-http-proxy.c > +++ b/src/wocky-http-proxy.c > @@ -454,7 +454,9 @@ reply_read_cb (GObject *source, > return; > } > > - g_task_return_pointer (data->task, data, (GDestroyNotify) free_connect_data); > + g_task_return_pointer (data->task, data->io_stream, (GDestroyNotify) g_object_unref); > + data->io_stream = NULL; > + free_connect_data (data); > g_object_unref (data->task); You need to move the g_object_unref(data->task) to be before free_connect_data() (or put the next patch before this one?) > } > > @@ -464,9 +466,8 @@ wocky_http_proxy_connect_finish (GProxy *proxy, > GError **error) > { > GTask *task = G_TASK (result); > - ConnectAsyncData *data = g_task_propagate_pointer (task, error); > > - return data ? g_object_ref (data->io_stream) : NULL; > + return g_task_propagate_pointer (task, error); Yes, data was leaking and GIOStream had an extra ref... Now we just pass along the GIOStream. Looks okay. Reviewed-by: Victor Toso <victortoso@xxxxxxxxxx> > } > > static gboolean > -- > 2.7.4 > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel