wmem_tree: fix crash with wmem_tree_destroy and NULL scope

The function was documented for use with a NULL scope, but it actually
crashes since callbacks are not available for NULL scopes. git master
is unaffected, but the GTK+ protocol dialog in 2.4 and 2.6 do crash.

Bug: 14349
Change-Id: I54350e112192394797cf85eaac4f30194178d7c4
Fixes: v2.3.0rc0-2597-gb7d6cca4ae ("Add wmem_tree_destroy")
Reviewed-on: https://code.wireshark.org/review/30126
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
Peter Wu 2018-10-11 12:14:00 +02:00 committed by Anders Broman
parent f57cf9e56c
commit f4be16aa45
1 changed files with 6 additions and 2 deletions

View File

@ -284,8 +284,12 @@ void
wmem_tree_destroy(wmem_tree_t *tree, gboolean free_keys, gboolean free_values)
{
free_tree_node(tree->allocator, tree->root, free_keys, free_values);
wmem_unregister_callback(tree->master, tree->master_cb_id);
wmem_unregister_callback(tree->allocator, tree->slave_cb_id);
if (tree->master) {
wmem_unregister_callback(tree->master, tree->master_cb_id);
}
if (tree->allocator) {
wmem_unregister_callback(tree->allocator, tree->slave_cb_id);
}
wmem_free(tree->master, tree);
}