
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@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@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