]> xenbits.xensource.com Git - libvirt.git/commitdiff
events: Add virObjectEventCallbackFree
authorCole Robinson <crobinso@redhat.com>
Thu, 23 Jun 2016 15:40:53 +0000 (11:40 -0400)
committerCole Robinson <crobinso@redhat.com>
Fri, 1 Jul 2016 11:15:38 +0000 (07:15 -0400)
src/conf/object_event.c

index 95bf3e6619bd350c7a6e080e053b5167ab83bc57..1b5a4d018fc7ea80c703f682c8168acc57120fe4 100644 (file)
@@ -125,6 +125,22 @@ virObjectEventDispose(void *obj)
     VIR_FREE(event->meta.name);
 }
 
+/**
+ * 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;
 }