1
0

virLockSpacePreExecRestart: Refactor memory cleanup

Switch to using the 'g_auto*' helpers.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Peter Krempa 2021-02-11 18:29:40 +01:00
parent 49efa299b5
commit 9a1651f64d

View File

@ -418,9 +418,10 @@ virLockSpacePtr virLockSpaceNewPostExecRestart(virJSONValuePtr object)
virJSONValuePtr virLockSpacePreExecRestart(virLockSpacePtr lockspace) virJSONValuePtr virLockSpacePreExecRestart(virLockSpacePtr lockspace)
{ {
virJSONValuePtr object = virJSONValueNewObject(); g_autoptr(virJSONValue) object = virJSONValueNewObject();
virJSONValuePtr resources; g_autoptr(virJSONValue) resources = virJSONValueNewArray();
virHashKeyValuePairPtr pairs = NULL, tmp; g_autofree virHashKeyValuePairPtr pairs = NULL;
virHashKeyValuePairPtr tmp;
virMutexLock(&lockspace->lock); virMutexLock(&lockspace->lock);
@ -428,25 +429,14 @@ virJSONValuePtr virLockSpacePreExecRestart(virLockSpacePtr lockspace)
virJSONValueObjectAppendString(object, "directory", lockspace->dir) < 0) virJSONValueObjectAppendString(object, "directory", lockspace->dir) < 0)
goto error; goto error;
resources = virJSONValueNewArray();
if (virJSONValueObjectAppend(object, "resources", resources) < 0) {
virJSONValueFree(resources);
goto error;
}
tmp = pairs = virHashGetItems(lockspace->resources, NULL, false); tmp = pairs = virHashGetItems(lockspace->resources, NULL, false);
while (tmp && tmp->value) { while (tmp && tmp->value) {
virLockSpaceResourcePtr res = (virLockSpaceResourcePtr)tmp->value; virLockSpaceResourcePtr res = (virLockSpaceResourcePtr)tmp->value;
virJSONValuePtr child = virJSONValueNewObject(); g_autoptr(virJSONValue) child = virJSONValueNewObject();
virJSONValuePtr owners = NULL; g_autoptr(virJSONValue) owners = virJSONValueNewArray();
size_t i; size_t i;
if (virJSONValueArrayAppend(resources, child) < 0) {
virJSONValueFree(child);
goto error;
}
if (virJSONValueObjectAppendString(child, "name", res->name) < 0 || if (virJSONValueObjectAppendString(child, "name", res->name) < 0 ||
virJSONValueObjectAppendString(child, "path", res->path) < 0 || virJSONValueObjectAppendString(child, "path", res->path) < 0 ||
virJSONValueObjectAppendNumberInt(child, "fd", res->fd) < 0 || virJSONValueObjectAppendNumberInt(child, "fd", res->fd) < 0 ||
@ -460,34 +450,35 @@ virJSONValuePtr virLockSpacePreExecRestart(virLockSpacePtr lockspace)
goto error; goto error;
} }
owners = virJSONValueNewArray();
if (virJSONValueObjectAppend(child, "owners", owners) < 0) {
virJSONValueFree(owners);
goto error;
}
for (i = 0; i < res->nOwners; i++) { for (i = 0; i < res->nOwners; i++) {
virJSONValuePtr owner = virJSONValueNewNumberUlong(res->owners[i]); g_autoptr(virJSONValue) owner = virJSONValueNewNumberUlong(res->owners[i]);
if (!owner) if (!owner)
goto error; goto error;
if (virJSONValueArrayAppend(owners, owner) < 0) { if (virJSONValueArrayAppend(owners, owner) < 0)
virJSONValueFree(owner);
goto error; goto error;
} owner = NULL;
} }
if (virJSONValueObjectAppend(child, "owners", owners) < 0)
goto error;
owners = NULL;
if (virJSONValueArrayAppend(resources, child) < 0)
goto error;
child = NULL;
tmp++; tmp++;
} }
VIR_FREE(pairs);
if (virJSONValueObjectAppend(object, "resources", resources) < 0)
goto error;
resources = NULL;
virMutexUnlock(&lockspace->lock); virMutexUnlock(&lockspace->lock);
return object; return object;
error: error:
VIR_FREE(pairs);
virJSONValueFree(object);
virMutexUnlock(&lockspace->lock); virMutexUnlock(&lockspace->lock);
return NULL; return NULL;
} }