wmem: Ensure callbacks are initialized and not accidentally unregistered
authorMichael Mann <mmann78@netscape.net>
Sat, 4 Mar 2017 23:33:33 +0000 (18:33 -0500)
committerAnders Broman <a.broman58@gmail.com>
Sun, 5 Mar 2017 09:05:10 +0000 (09:05 +0000)
Start the "callback register ID" at 1, so that zeroed out callback IDs
are not found during unregister.

Change-Id: I1d7d70f53d89c40e07d1637e1e195dd027855ed3
Reviewed-on: https://code.wireshark.org/review/20385
Reviewed-by: Michael Mann <mmann78@netscape.net>
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Evan Huus <eapache@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
epan/wmem/wmem_tree.c
epan/wmem/wmem_user_cb.c

index c7f3f56ebd3ec3c6e6d750aecddf1016318dd5e8..71815c7567c31f54539a6212e8c4dbcc0b2d354c 100644 (file)
@@ -211,11 +211,10 @@ wmem_tree_new(wmem_allocator_t *allocator)
 {
     wmem_tree_t *tree;
 
-    tree = wmem_new(allocator, wmem_tree_t);
+    tree = wmem_new0(allocator, wmem_tree_t);
     tree->master    = allocator;
     tree->allocator = allocator;
-    tree->root      = NULL;
-    tree->post_rotation_cb = NULL;
+
     return tree;
 }
 
@@ -251,11 +250,9 @@ wmem_tree_new_autoreset(wmem_allocator_t *master, wmem_allocator_t *slave)
 {
     wmem_tree_t *tree;
 
-    tree = wmem_new(master, wmem_tree_t);
+    tree = wmem_new0(master, wmem_tree_t);
     tree->master    = master;
     tree->allocator = slave;
-    tree->root      = NULL;
-    tree->post_rotation_cb      = NULL;
 
     tree->master_cb_id = wmem_register_callback(master, wmem_tree_destroy_cb,
             tree);
index 8a386bc5b8850caf92011c1c3fc6a78c204c93d5..b68f8fed9818697557420a3211580b3912cc804b 100644 (file)
@@ -67,7 +67,7 @@ wmem_register_callback(wmem_allocator_t *allocator,
         wmem_user_cb_t callback, void *user_data)
 {
     wmem_user_cb_container_t *container;
-    static guint next_id = 0;
+    static guint next_id = 1;
 
     container = wmem_new(NULL, wmem_user_cb_container_t);