util: qemu: use VIR_AUTOFREE instead of VIR_FREE for scalar types

By making use of GNU C's cleanup attribute handled by the
VIR_AUTOFREE macro for declaring scalar variables, majority
of the VIR_FREE calls can be dropped, which in turn leads to
getting rid of most of our cleanup sections.

Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
Sukrit Bhatnagar 2018-07-28 23:31:46 +05:30 committed by Erik Skultety
parent c3a2e274c7
commit 4fe2eea3aa

View File

@ -85,29 +85,22 @@ virQEMUBuildCommandLineJSONArrayNumbered(const char *key,
virBufferPtr buf) virBufferPtr buf)
{ {
virJSONValuePtr member; virJSONValuePtr member;
char *prefix = NULL;
size_t i; size_t i;
int ret = 0;
for (i = 0; i < virJSONValueArraySize(array); i++) { for (i = 0; i < virJSONValueArraySize(array); i++) {
member = virJSONValueArrayGet((virJSONValuePtr) array, i); member = virJSONValueArrayGet((virJSONValuePtr) array, i);
VIR_AUTOFREE(char *) prefix = NULL;
if (virAsprintf(&prefix, "%s.%zu", key, i) < 0) if (virAsprintf(&prefix, "%s.%zu", key, i) < 0)
goto cleanup; return 0;
if (virQEMUBuildCommandLineJSONRecurse(prefix, member, buf, if (virQEMUBuildCommandLineJSONRecurse(prefix, member, buf,
virQEMUBuildCommandLineJSONArrayNumbered, virQEMUBuildCommandLineJSONArrayNumbered,
true) < 0) true) < 0)
goto cleanup; return 0;
VIR_FREE(prefix);
} }
ret = 0; return 0;
cleanup:
VIR_FREE(prefix);
return ret;
} }
@ -118,23 +111,19 @@ virQEMUBuildCommandLineJSONIterate(const char *key,
void *opaque) void *opaque)
{ {
struct virQEMUCommandLineJSONIteratorData *data = opaque; struct virQEMUCommandLineJSONIteratorData *data = opaque;
char *tmpkey = NULL;
int ret = -1;
if (data->prefix) { if (data->prefix) {
VIR_AUTOFREE(char *) tmpkey = NULL;
if (virAsprintf(&tmpkey, "%s.%s", data->prefix, key) < 0) if (virAsprintf(&tmpkey, "%s.%s", data->prefix, key) < 0)
return -1; return -1;
ret = virQEMUBuildCommandLineJSONRecurse(tmpkey, value, data->buf, return virQEMUBuildCommandLineJSONRecurse(tmpkey, value, data->buf,
data->arrayFunc, false); data->arrayFunc, false);
VIR_FREE(tmpkey);
} else { } else {
ret = virQEMUBuildCommandLineJSONRecurse(key, value, data->buf, return virQEMUBuildCommandLineJSONRecurse(key, value, data->buf,
data->arrayFunc, false); data->arrayFunc, false);
} }
return ret;
} }