Once I had a static "virsh" binary, I ran this:
cd src && valgrind --leak-check=full ./virsh --connect \
test://$PWD/../docs/testnode.xml list
which exposed some leaks.
I fixed them like this:
Plug test-related leaks.
* src/test.c (testLoadNetwork): Free forwardDev.
(testLoadDomain): Free ctxt.
(testLoadNetwork): Likewise.
(testOpenFromFile): Likewise.
Signed-off-by: Jim Meyering <meyering(a)redhat.com>
---
src/test.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/src/test.c b/src/test.c
index d228b31..c46a045 100644
--- a/src/test.c
+++ b/src/test.c
@@ -351,9 +351,11 @@ static int testLoadDomain(virConnectPtr conn,
privconn->domains[handle].onPoweroff = onPoweroff;
privconn->domains[handle].onCrash = onCrash;
+ xmlXPathFreeContext(ctxt);
return (handle);
error:
+ xmlXPathFreeContext(ctxt);
if (name)
free(name);
return (-1);
@@ -508,6 +510,7 @@ static int testLoadNetwork(virConnectPtr conn,
if (forwardDev) {
strncpy(privconn->networks[handle].forwardDev, forwardDev,
sizeof(privconn->networks[handle].forwardDev)-1);
privconn->networks[handle].forwardDev[sizeof(privconn->networks[handle].forwardDev)-1]
= '\0';
+ free(forwardDev);
}
strncpy(privconn->networks[handle].ipAddress, ipaddress,
sizeof(privconn->networks[handle].ipAddress)-1);
@@ -522,9 +525,12 @@ static int testLoadNetwork(virConnectPtr conn,
strncpy(privconn->networks[handle].dhcpEnd, dhcpend,
sizeof(privconn->networks[handle].dhcpEnd)-1);
privconn->networks[handle].dhcpEnd[sizeof(privconn->networks[handle].dhcpEnd)-1] =
'\0';
free(dhcpend);
+ xmlXPathFreeContext(ctxt);
return (handle);
error:
+ xmlXPathFreeContext(ctxt);
+ free (forwardDev);
if (ipaddress)
free(ipaddress);
if (ipnetmask)
@@ -833,11 +839,13 @@ static int testOpenFromFile(virConnectPtr conn,
}
}
+ xmlXPathFreeContext(ctxt);
xmlFreeDoc(xml);
return (0);
error:
+ xmlXPathFreeContext(ctxt);
if (domains != NULL)
free(domains);
if (networks != NULL)
--
1.5.4.rc5.1.g0fa73