aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wmem/wmem_test.c
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-06-16 22:37:55 +0000
committerEvan Huus <eapache@gmail.com>2013-06-16 22:37:55 +0000
commit55264582bee31014d5d5a95b877b549287695bcd (patch)
tree64a331faddc0d2bedf39d49100a38e974eb91731 /epan/wmem/wmem_test.c
parentffee3af2078a1bbe8a52396d133e2d3fa5d8c308 (diff)
More callback tweaks, to permit unregistering a callback from the same place
it was originally registered. svn path=/trunk/; revision=49969
Diffstat (limited to 'epan/wmem/wmem_test.c')
-rw-r--r--epan/wmem/wmem_test.c34
1 files changed, 18 insertions, 16 deletions
diff --git a/epan/wmem/wmem_test.c b/epan/wmem/wmem_test.c
index 7853e21370..83139a4e64 100644
--- a/epan/wmem/wmem_test.c
+++ b/epan/wmem/wmem_test.c
@@ -113,21 +113,17 @@ wmem_test_allocator_callbacks(void)
wmem_allocator_t *allocator;
gboolean t = TRUE;
gboolean f = FALSE;
+ guint cb_id;
allocator = wmem_allocator_force_new(WMEM_ALLOCATOR_STRICT);
expected_allocator = allocator;
-#define REG_TEST_CB(UDATA) do { \
- wmem_register_cleanup_callback(expected_allocator, \
- &wmem_test_cb, (UDATA)); \
- } while (0);
-
- REG_TEST_CB(&f);
- REG_TEST_CB(&f);
- REG_TEST_CB(&t);
- REG_TEST_CB(&t);
- REG_TEST_CB(&f);
+ wmem_register_callback(expected_allocator, &wmem_test_cb, &f);
+ wmem_register_callback(expected_allocator, &wmem_test_cb, &f);
+ cb_id = wmem_register_callback(expected_allocator, &wmem_test_cb, &t);
+ wmem_register_callback(expected_allocator, &wmem_test_cb, &t);
+ wmem_register_callback(expected_allocator, &wmem_test_cb, &f);
expected_event = WMEM_CB_FREE_EVENT;
@@ -143,23 +139,29 @@ wmem_test_allocator_callbacks(void)
wmem_free_all(allocator);
g_assert(cb_called_count == 2);
- REG_TEST_CB(&f);
- REG_TEST_CB(&t);
-
+ wmem_unregister_callback(allocator, cb_id);
cb_called_count = 0;
wmem_free_all(allocator);
- g_assert(cb_called_count == 4);
+ g_assert(cb_called_count == 1);
+
+ cb_id = wmem_register_callback(expected_allocator, &wmem_test_cb, &f);
+ wmem_register_callback(expected_allocator, &wmem_test_cb, &t);
cb_called_count = 0;
wmem_free_all(allocator);
g_assert(cb_called_count == 3);
- REG_TEST_CB(&t);
+ wmem_unregister_callback(allocator, cb_id);
+ cb_called_count = 0;
+ wmem_free_all(allocator);
+ g_assert(cb_called_count == 2);
+
+ wmem_register_callback(expected_allocator, &wmem_test_cb, &t);
expected_event = WMEM_CB_DESTROY_EVENT;
cb_called_count = 0;
wmem_destroy_allocator(allocator);
- g_assert(cb_called_count == 4);
+ g_assert(cb_called_count == 3);
}
static void