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

Re: [libvirt] [libvirt-glib] Add async variant of gvir_domain_get_info()



On Thu, Apr 19, 2012 at 04:24:35PM +0300, Zeeshan Ali (Khattak) wrote:
> On Thu, Apr 19, 2012 at 11:52 AM, Christophe Fergeau
> <cfergeau redhat com> wrote:
> > On Thu, Apr 19, 2012 at 03:12:01AM +0300, Zeeshan Ali (Khattak) wrote:
> >> From: "Zeeshan Ali (Khattak)" <zeeshanak gnome org>
> >> +static void
> >> +gvir_domain_get_info_helper(GSimpleAsyncResult *res,
> >> +                            GObject *object,
> >> +                            GCancellable *cancellable G_GNUC_UNUSED)
> >> +{
> >> +    GVirDomain *dom = GVIR_DOMAIN(object);
> >> +    GVirDomainInfo *info;
> >> +    GError *err = NULL;
> >> +
> >> +    info = gvir_domain_get_info(dom, &err);
> >> +    if (err)
> >> +        g_simple_async_result_take_error(res, err);
> >> +    else
> >> +        g_simple_async_result_set_op_res_gpointer(res, info, NULL);
> >
> > Shouldn't the last parameter be gvir_domain_info_free?
> 
> No, we give this info to user in the finalize call:

Looking at GSimpleAsyncResult documentation and use, it seems customary to pass a
GDestroyNotify function here, and to ref the returned object in the _finish
function if needed. It seems it's perfectly valid to call
gvir_domain_get_info_async() with a NULL callback, or not to call _finish
if you are not interested in the result. If you don't pass a non-NULL
GDestroyNotify to set_op_res_gpointer, I don't see how you can avoid a
memory leak in these cases. Think also of an error (cancellation) occurring
between the call to _helper and the call to finish.

Christophe

Attachment: pgpqVrD8vKTwU.pgp
Description: PGP signature


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