
On 12/03/2010 09:21 AM, Jiri Denemark wrote:
--- tests/commandtest.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/tests/commandtest.c b/tests/commandtest.c index ace2f33..31adeea 100644 --- a/tests/commandtest.c +++ b/tests/commandtest.c @@ -509,9 +509,12 @@ cleanup: * Only stdin/out/err open */ static int test15(const void *unused ATTRIBUTE_UNUSED) { + char *cwd = NULL; virCommandPtr cmd = virCommandNew(abs_builddir "/commandhelper");
- virCommandSetWorkingDirectory(cmd, abs_builddir "/commanddata"); + if (virAsprintf(&cwd, "%s/commanddata", abs_srcdir) < 0) + return -1;
Oops - this needs to call virCommandFree(cmd) before returning.
+ virCommandSetWorkingDirectory(cmd, cwd);
Sweet - I knew it would be worth adding virCommandSetWorkingDirectory, even when it wasn't in Dan's original implementation.
if (virCommandRun(cmd, NULL) < 0) { virErrorPtr err = virGetLastError(); @@ -519,6 +522,7 @@ static int test15(const void *unused ATTRIBUTE_UNUSED) { return -1; }
+ VIR_FREE(cwd);
Oops - this leaks cwd if you returned 3 lines earlier. You can float the VIR_FREE(cwd) up to just after the virCommandSetWorkingDirectory call, since you don't need cwd after that point. NACK - I'll need to see a leak-free v2 before approving. -- Eric Blake eblake@redhat.com +1-801-349-2682 Libvirt virtualization library http://libvirt.org