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(a)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;
}
@@ -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