On 04/29/2013 08:45 AM, Michal Privoznik wrote:
On 29.04.2013 14:35, John Ferlan wrote:
> As a result of commit id '19c345f2', 'make -C tests valgrind' has
the
> following for qemuxml2argvtest:
>
> ==22482== 197 (80 direct, 117 indirect) bytes in 1 blocks are definitely lost in loss
record 101 of 120
> ==22482== at 0x4A06B6F: calloc (vg_replace_malloc.c:593)
> ==22482== by 0x4C6F301: virAlloc (viralloc.c:124)
> ==22482== by 0x4C840FC: virSaveLastError (virerror.c:308)
> ==22482== by 0x431882: qemuBuildCommandLine (qemu_command.c:8204)
> ==22482== by 0x41E8F0: testCompareXMLToArgvHelper (qemuxml2argvtest.c:155)
> ==22482== by 0x41FE9F: virtTestRun (testutils.c:157)
> ==22482== by 0x419DEB: mymain (qemuxml2argvtest.c:654)
> ==22482== by 0x4204DA: virtTestMain (testutils.c:719)
> ==22482== by 0x39D0821A04: (below main) (libc-start.c:225)
> ==22482==
> ---
> src/qemu/qemu_command.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
> index d23bdfc..421a93c 100644
> --- a/src/qemu/qemu_command.c
> +++ b/src/qemu/qemu_command.c
> @@ -8205,6 +8205,7 @@ error:
> for (i = 0; i <= last_good_net; i++)
> virDomainConfNWFilterTeardown(def->nets[i]);
> virSetError(originalError);
> + virFreeError(originalError);
> virCommandFree(cmd);
> return NULL;
> }
>
ACK
Although, I think there are some other places where virSetError is not
followed by virFreeError, e.g. src/network/bridge_driver.c:2143
Michal
Right I saw that one too, but since it wasn't directly related to this
particular error I "passed" for now, but can generate a separate patch
for that. Unless of course it's felt I should use this opportunity to
handle both.
I also noted there's some inconsistent uses - some places check the
return of virSaveLastError() before calling virSetError() although it
doesn't seem to cause issues since virCopyError() will "do the right
thing" if the buffer is empty...
John