From: Peter Krempa Date: Fri, 22 Feb 2019 15:32:11 +0000 (+0100) Subject: util: alloc: Note that VIR_AUTOPTR/VIR_AUTOCLEAN must not be used with vectors X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=9ca7ca3d9fbddb363af9940f5cdca478e26a88a0;p=libvirt.git util: alloc: Note that VIR_AUTOPTR/VIR_AUTOCLEAN must not be used with vectors We'd free only the first element of the vector leaking the rest. Signed-off-by: Peter Krempa Reviewed-by: Erik Skultety --- diff --git a/src/util/viralloc.h b/src/util/viralloc.h index 15451d4673..518419e694 100644 --- a/src/util/viralloc.h +++ b/src/util/viralloc.h @@ -650,6 +650,9 @@ void virAllocTestHook(void (*func)(int, void*), void *data); * the variable declared with it by calling the function * defined by VIR_DEFINE_AUTOPTR_FUNC when the variable * goes out of scope. + * + * Note that this macro must NOT be used with vectors! The freeing function + * will not free any elements beyond the first. */ # define VIR_AUTOPTR(type) \ __attribute__((cleanup(VIR_AUTOPTR_FUNC_NAME(type)))) type * @@ -662,6 +665,9 @@ void virAllocTestHook(void (*func)(int, void*), void *data); * when the variable goes out of scope. * The cleanup function is registered by VIR_DEFINE_AUTOCLEAN_FUNC macro for * the given type. + * + * Note that this macro must NOT be used with vectors! The cleaning function + * will not clean any elements beyond the first. */ # define VIR_AUTOCLEAN(type) \ __attribute__((cleanup(VIR_AUTOCLEAN_FUNC_NAME(type)))) type