mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-02 09:55:18 +00:00
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:
parent
c3a2e274c7
commit
4fe2eea3aa
@ -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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user