diff options
author | Michael Mann <mmann78@netscape.net> | 2017-02-08 19:28:25 -0500 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-02-09 22:02:25 +0000 |
commit | cd3855225935c13e8db71ca73688aadd6445a710 (patch) | |
tree | 5cc10516487429904294f581821d3dbb91f73249 /epan | |
parent | f6d9f7fb303f090f1809c7f6971d72f31e3a8d8e (diff) |
Add wmem_tree_remove32
Change-Id: Ic79fd0a2a13341dd7ba563cf3a056c51e9d16960
Reviewed-on: https://code.wireshark.org/review/20037
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/wmem/wmem_tree.c | 11 | ||||
-rw-r--r-- | epan/wmem/wmem_tree.h | 8 |
2 files changed, 19 insertions, 0 deletions
diff --git a/epan/wmem/wmem_tree.c b/epan/wmem/wmem_tree.c index e643e110a2..c5ef912f03 100644 --- a/epan/wmem/wmem_tree.c +++ b/epan/wmem/wmem_tree.c @@ -533,6 +533,17 @@ wmem_tree_lookup32_le(wmem_tree_t *tree, guint32 key) } } +void * +wmem_tree_remove32(wmem_tree_t *tree, guint32 key) +{ + void *ret = wmem_tree_lookup32(tree, key); + if (ret) { + /* Not really a remove, but set data to NULL to mark node with is_removed */ + wmem_tree_insert32(tree, key, NULL); + } + return ret; +} + void wmem_tree_insert_string(wmem_tree_t* tree, const gchar* k, void* v, guint32 flags) { diff --git a/epan/wmem/wmem_tree.h b/epan/wmem/wmem_tree.h index a31de3c1e9..788af2413e 100644 --- a/epan/wmem/wmem_tree.h +++ b/epan/wmem/wmem_tree.h @@ -107,6 +107,14 @@ WS_DLL_PUBLIC void * wmem_tree_lookup32_le(wmem_tree_t *tree, guint32 key); +/** Remove a node in the tree indexed by a guint32 integer value. This is not + * really a remove, but the value is set to NULL so that wmem_tree_lookup32 + * not will find it. + */ +WS_DLL_PUBLIC +void * +wmem_tree_remove32(wmem_tree_t *tree, guint32 key); + /** case insensitive strings as keys */ #define WMEM_TREE_STRING_NOCASE 0x00000001 /** Insert a new value under a string key. Like wmem_tree_insert32 but where the |