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