]> git.ipfire.org Git - thirdparty/libvirt.git/commit
event-test: Unregister close callback
authorMichal Privoznik <mprivozn@redhat.com>
Fri, 13 Dec 2013 16:07:52 +0000 (17:07 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 24 Dec 2013 16:18:34 +0000 (17:18 +0100)
commitf7fee15ae848071f183da8d5c264974cc225d413
treeeb65eca2f83a4a3d0fb8f70dd282a7fdaf9bb5d7
parente26cae6b85508cc209958cf002fb1d0c8bb4f6a2
event-test: Unregister close callback

When registering a close callback, the connection refcount is increased
as the connection object is passed to the callback and hence we must
prevent deleting it too soon. However, when closing the connection, the
connection object is just unrefed. So whenever a connection with a close
callback is closed, we end up with the connection object which has
exactly one reference. Leaving the code as-is doesn't mean the end of
the world as we know it, but why give a bad example?

==14531== 288 bytes in 1 blocks are still reachable in loss record 695 of 762
==14531==    at 0x4C2BDE4: calloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==14531==    by 0x4E9FE09: virAllocVar (viralloc.c:558)
==14531==    by 0x4EDBE45: virObjectNew (virobject.c:190)
==14531==    by 0x4F71AAC: virGetConnect (datatypes.c:116)
==14531==    by 0x4F78511: do_open (libvirt.c:1136)
==14531==    by 0x4F7B3AC: virConnectOpenAuth (libvirt.c:1481)
==14531==    by 0x4011D2: main (event-test.c:499)

(and other leaks tied to virGetConnect())

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
examples/object-events/event-test.c