summaryrefslogtreecommitdiff
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
parentf6d9f7fb303f090f1809c7f6971d72f31e3a8d8e (diff)
downloadwireshark-cd3855225935c13e8db71ca73688aadd6445a710.tar.gz
Add wmem_tree_remove32
Change-Id: Ic79fd0a2a13341dd7ba563cf3a056c51e9d16960 Reviewed-on: https://code.wireshark.org/review/20037 Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--debian/libwireshark0.symbols1
-rw-r--r--epan/wmem/wmem_tree.c11
-rw-r--r--epan/wmem/wmem_tree.h8
3 files changed, 20 insertions, 0 deletions
diff --git a/debian/libwireshark0.symbols b/debian/libwireshark0.symbols
index fadc9f5f2a..c400c2a000 100644
--- a/debian/libwireshark0.symbols
+++ b/debian/libwireshark0.symbols
@@ -1831,6 +1831,7 @@ libwireshark.so.0 libwireshark0 #MINVER#
wmem_tree_new@Base 1.12.0~rc1
wmem_tree_new_autoreset@Base 1.12.0~rc1
wmem_tree_remove_string@Base 1.99.9
+ wmem_tree_remove32@Base 2.3.0
wmem_unregister_callback@Base 1.12.0~rc1
word_to_hex@Base 2.1.0
write_carrays_hex_data@Base 1.99.1
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