aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-02-08 19:28:25 -0500
committerMichael Mann <mmann78@netscape.net>2017-02-09 22:02:25 +0000
commitcd3855225935c13e8db71ca73688aadd6445a710 (patch)
tree5cc10516487429904294f581821d3dbb91f73249 /epan
parentf6d9f7fb303f090f1809c7f6971d72f31e3a8d8e (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.c11
-rw-r--r--epan/wmem/wmem_tree.h8
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