Re: [PATCH] cpu.c: Use g_autoptr and g_autofree in virCPUDataParse

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



cpu: Use g_autoptr and g_autofree in virCPUDataParse

The first part says which driver/area the patch touches,
no need to put an extension there.

On a Friday in 2020, Seeteena Thoufeek wrote:
Signed-off-by: Seeteena Thoufeek <s1seetee@xxxxxxxxxxxxxxxxxx>
---
src/cpu/cpu.c | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
index 631c755..e556ffe 100644
--- a/src/cpu/cpu.c
+++ b/src/cpu/cpu.c
@@ -772,40 +772,36 @@ virCPUDataPtr
virCPUDataParse(const char *xmlStr)
{
    struct cpuArchDriver *driver;
-    xmlDocPtr xml = NULL;
-    xmlXPathContextPtr ctxt = NULL;
+    g_autoptr(xmlDoc) xml = NULL;
+    g_autoptr(xmlXPathContext) ctxt = NULL;
    virCPUDataPtr data = NULL;
-    char *arch = NULL;
+    g_autofree char *arch = NULL;

    VIR_DEBUG("xmlStr=%s", xmlStr);

    if (!(xml = virXMLParseStringCtxt(xmlStr, _("CPU data"), &ctxt))) {
        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                       _("cannot parse CPU data"));
-        goto cleanup;
+        return data;

The point of these refactors is to make the flow of the function easier to
read, so this (and all the other cases except the successful one at the
end) should return NULL;

Jano


    }

    if (!(arch = virXPathString("string(/cpudata/@arch)", ctxt))) {
        virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                       _("missing CPU data architecture"));
-        goto cleanup;
+        return data;
    }

    if (!(driver = cpuGetSubDriverByName(arch)))
-        goto cleanup;
+        return data;

    if (!driver->dataParse) {
        virReportError(VIR_ERR_NO_SUPPORT,
                       _("cannot parse %s CPU data"), arch);
-        goto cleanup;
+        return data;
    }

    data = driver->dataParse(ctxt);

- cleanup:
-    xmlXPathFreeContext(ctxt);
-    xmlFreeDoc(xml);
-    VIR_FREE(arch);
    return data;
}

--
1.8.3.1


Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux