From a16cd9a6eb0089f86233b32fb14923beae6c068e Mon Sep 17 00:00:00 2001 From: Nikolay Shirokovskiy Date: Wed, 17 Feb 2016 15:14:55 +0300 Subject: [PATCH] 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 --- src/datatypes.c | 4 ++++ 1 file changed, 4 insertions(+) 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);