On 5/22/25 15:19, Peter Krempa wrote:
On Thu, May 22, 2025 at 14:25:13 +0200, Michal Privoznik via Devel
wrote:
> From: Michal Privoznik <mprivozn(a)redhat.com>
>
> While we do not want the nss plugin to link with anything but
> necessary libs (libc and libjson-c) it can benefit from automatic
> memory freeing. Instead of inventing macros with new name for
> them, lets stick with g_autofree and g_steal_pointer() which we
> are used to from the rest of the code. Borrow and simplify
> definitions for these macros then.
>
> Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
> ---
> build-aux/syntax-check.mk | 2 +-
> tools/nss/libvirt_nss.h | 24 ++++++++++++++++++++++++
> 2 files changed, 25 insertions(+), 1 deletion(-)
>
> @@ -62,6 +63,29 @@ do { \
> # define NSS_NAME(s) _nss_libvirt_guest_##s##_r
> #endif
>
> +#if !defined(g_autofree)
> +static inline void
> +generic_free(void *p)
> +{
> + free(*((void **)p));
> +}
> +# define g_autofree __attribute__((cleanup(generic_free)))
> +#endif
> +
> +#if !defined(g_steal_pointer)
> +static inline void *
> +g_steal_pointer(void *p)
> +{
> + void **pp = (void **)p;
> + void *ptr = *pp;
> +
> + *pp = NULL;
> + return ptr;
> +}
> +# define g_steal_pointer(x) (__typeof__(*(x))) g_steal_pointer(x)
As noted in the next patch it's a bad idea to name this same as
glib macros. This code is supposed to be kept glib free and this makes
it seem as if glib was used here.
I can rename it, sure. But I wanted to keep things consistent. Maybe I
can get away with: nss_autofree and nss_steal_pointer (that is replace
'g' with 'nss')?
Michal