[libvirt] [PATCH v1 04/40] util: buffer: define cleanup function using VIR_DEFINE_AUTOPTR_FUNC

Erik Skultety eskultet at redhat.com
Mon Jul 23 11:25:09 UTC 2018


On Sat, Jul 21, 2018 at 05:36:36PM +0530, Sukrit Bhatnagar wrote:
> Using the new VIR_DEFINE_AUTOPTR_FUNC macro defined in
> src/util/viralloc.h, define a new wrapper around an existing
> cleanup function which will be called when a variable declared
> with VIR_AUTOPTR macro goes out of scope. Also, drop the redundant
> viralloc.h include, since that has moved from the source module into
> the header.
>
> When variables of type virBufferPtr and virBufferEscapePairPtr
> are declared using VIR_AUTOPTR, the functions virBufferFreeAndReset
> and virBufferEscapePairFree, respectively, will be run automatically
> on them when they go out of scope.
>
> Signed-off-by: Sukrit Bhatnagar <skrtbhtngr at gmail.com>
> ---
>  src/util/virbuffer.c | 2 +-
>  src/util/virbuffer.h | 9 +++++++--
>  2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/src/util/virbuffer.c b/src/util/virbuffer.c
> index 8076cd3..65f4a08 100644
> --- a/src/util/virbuffer.c
> +++ b/src/util/virbuffer.c
> @@ -31,7 +31,6 @@
>  #define __VIR_BUFFER_C__
>
>  #include "virbuffer.h"
> -#include "viralloc.h"
>  #include "virerror.h"
>  #include "virstring.h"
>
> @@ -664,6 +663,7 @@ virBufferEscapePairFree(virBufferEscapePairPtr pair)
>
>      VIR_FREE(pair);
>  }
> +VIR_DEFINE_AUTOPTR_FUNC(virBufferEscapePair, virBufferEscapePairFree)

I'm wondering whether we shouldn't export virBufferEscapePair struct to other
potential callers just to make things cleaner by having the
VIR_DEFINE_AUTOPTR_FUNC macros coupled together, but that can be done ad-hoc
once someone needs it, I'm fine with this change too.

>
>
>  /**
> diff --git a/src/util/virbuffer.h b/src/util/virbuffer.h
> index e95ee87..3b31060 100644
> --- a/src/util/virbuffer.h
> +++ b/src/util/virbuffer.h
> @@ -23,10 +23,13 @@
>  #ifndef __VIR_BUFFER_H__
>  # define __VIR_BUFFER_H__
>
> -# include "internal.h"
> -
>  # include <stdarg.h>
>
> +# include "internal.h"
> +

^This newline is redundant.

> +# include "viralloc.h"
> +
> +
>  /**
>   * virBuffer:
>   *
> @@ -119,4 +122,6 @@ int virBufferGetIndent(const virBuffer *buf, bool dynamic);
>  void virBufferTrim(virBufferPtr buf, const char *trim, int len);
>  void virBufferAddStr(virBufferPtr buf, const char *str);
>
> +VIR_DEFINE_AUTOPTR_FUNC(virBuffer, virBufferFreeAndReset)
> +
>  #endif /* __VIR_BUFFER_H__ */
> --
> 1.8.3.1
>

If you squash the static definition of virBufferEscapePairFree into this patch:

Reviewed-by: Erik Skultety <eskultet at redhat.com>




More information about the libvir-list mailing list