[libvirt] [PATCH 2/6] events: Add virObjectEventCallbackFree

Cole Robinson crobinso at redhat.com
Thu Jun 23 16:27:45 UTC 2016


---
 src/conf/object_event.c | 26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

diff --git a/src/conf/object_event.c b/src/conf/object_event.c
index 95bf3e6..1b5a4d0 100644
--- a/src/conf/object_event.c
+++ b/src/conf/object_event.c
@@ -126,6 +126,22 @@ virObjectEventDispose(void *obj)
 }
 
 /**
+ * virObjectEventCallbackFree:
+ * @list: event callback to free
+ *
+ * Free the memory in the domain event callback
+ */
+static void
+virObjectEventCallbackFree(virObjectEventCallbackPtr cb)
+{
+    if (!cb)
+        return;
+
+    virObjectUnref(cb->conn);
+    VIR_FREE(cb);
+}
+
+/**
  * virObjectEventCallbackListFree:
  * @list: event callback list head
  *
@@ -230,8 +246,7 @@ virObjectEventCallbackListRemoveID(virConnectPtr conn,
 
             if (cb->freecb)
                 (*cb->freecb)(cb->opaque);
-            virObjectUnref(cb->conn);
-            VIR_FREE(cb);
+            virObjectEventCallbackFree(cb);
             VIR_DELETE_ELEMENT(cbList->callbacks, i, cbList->count);
             return ret;
         }
@@ -280,8 +295,7 @@ virObjectEventCallbackListPurgeMarked(virObjectEventCallbackListPtr cbList)
             virFreeCallback freecb = cbList->callbacks[n]->freecb;
             if (freecb)
                 (*freecb)(cbList->callbacks[n]->opaque);
-            virObjectUnref(cbList->callbacks[n]->conn);
-            VIR_FREE(cbList->callbacks[n]);
+            virObjectEventCallbackFree(cbList->callbacks[n]);
 
             VIR_DELETE_ELEMENT(cbList->callbacks, n, cbList->count);
             n--;
@@ -441,9 +455,7 @@ virObjectEventCallbackListAddID(virConnectPtr conn,
     }
 
  cleanup:
-    if (event)
-        virObjectUnref(event->conn);
-    VIR_FREE(event);
+    virObjectEventCallbackFree(event);
     return ret;
 }
 
-- 
2.7.4




More information about the libvir-list mailing list