File pacemaker-libcib-functionize-destroying-op-callback-table.patch of Package pacemaker.14737

commit 33b3b7e7004e3ec5501c32a2217ec32775a5a487
Author: Ken Gaillot <kgaillot@redhat.com>
Date:   Mon Apr 24 10:38:50 2017 -0500

    Refactor: libcib: functionize destroying op callback table
    
    reduces code duplication

diff --git a/lib/cib/cib_client.c b/lib/cib/cib_client.c
index 5ded9434f..0f533309f 100644
--- a/lib/cib/cib_client.c
+++ b/lib/cib/cib_client.c
@@ -206,6 +206,15 @@ cib_destroy_op_callback(gpointer data)
     free(blob);
 }
 
+static void
+destroy_op_callback_table()
+{
+    if (cib_op_callback_table != NULL) {
+        g_hash_table_destroy(cib_op_callback_table);
+        cib_op_callback_table = NULL;
+    }
+}
+
 char *
 get_shadow_file(const char *suffix)
 {
@@ -348,14 +357,7 @@ cib_new_variant(void)
 
     new_cib = calloc(1, sizeof(cib_t));
 
-    if (cib_op_callback_table != NULL) {
-        g_hash_table_destroy(cib_op_callback_table);
-        cib_op_callback_table = NULL;
-    }
-    if (cib_op_callback_table == NULL) {
-        cib_op_callback_table = g_hash_table_new_full(g_direct_hash, g_direct_equal,
-                                                      NULL, cib_destroy_op_callback);
-    }
+    remove_cib_op_callback(0, TRUE); /* remove all */
 
     new_cib->call_id = 1;
     new_cib->variant = cib_undefined;
@@ -419,10 +421,7 @@ cib_delete(cib_t * cib)
         free(client);
     }
 
-    if(cib_op_callback_table) {
-        g_hash_table_destroy(cib_op_callback_table);
-        cib_op_callback_table = NULL;
-    }
+    destroy_op_callback_table();
 
     if(cib) {
         cib->cmds->free(cib);
@@ -639,13 +638,9 @@ void
 remove_cib_op_callback(int call_id, gboolean all_callbacks)
 {
     if (all_callbacks) {
-        if (cib_op_callback_table != NULL) {
-            g_hash_table_destroy(cib_op_callback_table);
-        }
-
+        destroy_op_callback_table();
         cib_op_callback_table = g_hash_table_new_full(g_direct_hash, g_direct_equal,
                                                       NULL, cib_destroy_op_callback);
-
     } else {
         g_hash_table_remove(cib_op_callback_table, GINT_TO_POINTER(call_id));
     }
openSUSE Build Service is sponsored by