From: Viktor Mihajlovski Date: Tue, 26 Mar 2013 09:54:53 +0000 (+0100) Subject: libvirt: Increase connection reference count for callbacks X-Git-Tag: v1.0.5-rc1~238 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=03a43efa86f5099d3f6df334f73961a535e488b5;p=thirdparty%2Flibvirt.git libvirt: Increase connection reference count for callbacks By adjusting the reference count of the connection object we prevent races between callback function and virConnectClose. Signed-off-by: Viktor Mihajlovski --- diff --git a/src/libvirt.c b/src/libvirt.c index 4b9ea75991..e9aff8aa48 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -20186,6 +20186,8 @@ int virConnectRegisterCloseCallback(virConnectPtr conn, return -1; } + virObjectRef(conn); + virMutexLock(&conn->lock); virCheckNonNullArgGoto(cb, error); @@ -20206,6 +20208,7 @@ int virConnectRegisterCloseCallback(virConnectPtr conn, error: virMutexUnlock(&conn->lock); + virObjectUnref(conn); virDispatchError(NULL); return -1; } @@ -20255,6 +20258,8 @@ int virConnectUnregisterCloseCallback(virConnectPtr conn, virMutexUnlock(&conn->lock); + virObjectUnref(conn); + return 0; error: