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 <[email protected]>
>>
>> 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 <[email protected]>
>> ---
>> 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