From: Nikolay Shirokovskiy Date: Wed, 17 Feb 2016 12:14:55 +0000 (+0300) Subject: virConnectCloseCallbackData: fix connection object refcount X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=a16cd9a6eb0089f86233b32fb14923beae6c068e;p=libvirt.git virConnectCloseCallbackData: fix connection object refcount We have reference to connection object in virConnectCloseCallbackData object thus we have to refcount it. Obviously we have problems in dispose and call functions. Let's fix it. Signed-off-by: Nikolay Shirokovskiy --- diff --git a/src/datatypes.c b/src/datatypes.c index 3e1d809b40..a60b05c02b 100644 --- a/src/datatypes.c +++ b/src/datatypes.c @@ -180,6 +180,7 @@ virConnectCloseCallbackDataDispose(void *obj) if (cb->freeCallback) cb->freeCallback(cb->opaque); + virObjectUnref(cb->conn); virObjectUnlock(cb); } @@ -226,6 +227,7 @@ void virConnectCloseCallbackDataUnregister(virConnectCloseCallbackDataPtr close, close->freeCallback(close->opaque); close->freeCallback = NULL; virObjectUnref(close->conn); + close->conn = NULL; cleanup: @@ -248,6 +250,8 @@ void virConnectCloseCallbackDataCall(virConnectCloseCallbackDataPtr close, close->freeCallback(close->opaque); close->callback = NULL; close->freeCallback = NULL; + virObjectUnref(close->conn); + close->conn = NULL; exit: virObjectUnlock(close);