
On Sat, Jul 28, 2018 at 11:31:47PM +0530, Sukrit Bhatnagar wrote:
By making use of GNU C's cleanup attribute handled by the VIR_AUTOPTR macro for declaring aggregate pointer variables, majority of the calls to *Free functions can be dropped, which in turn leads to getting rid of most of our cleanup sections.
Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com> --- src/util/virqemu.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-)
diff --git a/src/util/virqemu.c b/src/util/virqemu.c index 4089b8e..cb42d38 100644 --- a/src/util/virqemu.c +++ b/src/util/virqemu.c @@ -56,7 +56,7 @@ virQEMUBuildCommandLineJSONArrayBitmap(const char *key, { ssize_t pos = -1; ssize_t end; - virBitmapPtr bitmap = NULL; + VIR_AUTOPTR(virBitmap) bitmap = NULL;
if (virJSONValueGetArrayAsBitmap(array, &bitmap) < 0) return -1; @@ -73,8 +73,6 @@ virQEMUBuildCommandLineJSONArrayBitmap(const char *key, } }
- virBitmapFree(bitmap); - return 0; }
Reviewed-by: Erik Skultety <eskultet@redhat.com>
@@ -267,21 +265,19 @@ virQEMUBuildObjectCommandlineFromJSON(virBufferPtr buf, char * virQEMUBuildDriveCommandlineFromJSON(virJSONValuePtr srcdef) { - virBuffer buf = VIR_BUFFER_INITIALIZER; - char *ret = NULL; + VIR_AUTOPTR(virBuffer) buf = NULL;
- if (virQEMUBuildCommandLineJSON(srcdef, &buf, + if (VIR_ALLOC(buf) < 0) + return NULL; + + if (virQEMUBuildCommandLineJSON(srcdef, buf, virQEMUBuildCommandLineJSONArrayNumbered) < 0) - goto cleanup; + return NULL;
- if (virBufferCheckError(&buf) < 0) - goto cleanup; + if (virBufferCheckError(buf) < 0) + return NULL;
- ret = virBufferContentAndReset(&buf); - - cleanup: - virBufferFreeAndReset(&buf); - return ret; + return virBufferContentAndReset(buf);
we talked about virBuffer in previous patches, so that will need fixing, I'll push the hunk above. Erik