Re: [GSoC] Design ideas for implementing cleanup attribute

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

 



On Wed, 2018-05-23 at 18:05 +0200, Pavel Hrdina wrote:
> I liked the way how GLib is solving the issue so we can simply use the
> same approach since it looks reasonable.
> 
> There would be three different macros that would be used to annotate
> variable with attribute cleanup:
> 
> VIR_AUTOFREE char *str = NULL;
> 
>     - this would call virFree on that variable
> 
> VIR_AUTOPTR(virDomain) domain = NULL;
> 
>     - this would call registered free function on that variable
>     - to register the free function you would use:
> 
>         VIR_DEFINE_AUTOPTR_FUNC(virDomain, virDomainFree);
> 
> VIR_AUTOCLEAR(virDomain) domain = { 0 };
> 
>     - this would call registered clear function to free the content of
>       that structure
>     - to register that clear function you would use:
> 
>         VIR_DEFINE_AUTOCLEAR_FUNC(virDomain, virDomainClear);

I assume you would get a compilation error when trying to eg. use
VIR_AUTOCLEAR() with a type that doesn't have a clear function
registered?

As for VIR_AUTOFREE() and VIR_AUTOPTR(), I'd very much prefer if we
could have a single macro, since from the high-level point of view
they're both doing the same thing, that is, freeing memory that was
allocated on the heap.

However, I realize it might not be possible to register free
functions for a native type without having to introduce something
like

  typedef char * virString;

thus causing massive churn. How does GLib deal with that?

-- 
Andrea Bolognani / Red Hat / Virtualization

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux