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@xxxxxxxxx> --- 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; } @@ -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); } -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list