]> xenbits.xensource.com Git - libvirt.git/commitdiff
virConnectCloseCallbackData: fix connection object refcount
authorNikolay Shirokovskiy <nshirokovskiy@virtuozzo.com>
Wed, 17 Feb 2016 12:14:55 +0000 (15:14 +0300)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 1 Mar 2016 14:16:56 +0000 (14:16 +0000)
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 <nshirokovskiy@virtuozzo.com>
src/datatypes.c

index 3e1d809b4007302db32b5e65febbf87891f651c8..a60b05c02b59c3f4bcc92dd1d79db127f6414bc4 100644 (file)
@@ -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);