diff options
author | Evan Huus <eapache@gmail.com> | 2013-06-16 22:37:55 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2013-06-16 22:37:55 +0000 |
commit | 55264582bee31014d5d5a95b877b549287695bcd (patch) | |
tree | 64a331faddc0d2bedf39d49100a38e974eb91731 /epan/wmem/wmem_test.c | |
parent | ffee3af2078a1bbe8a52396d133e2d3fa5d8c308 (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.c | 34 |
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 |