summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2018-01-06 01:33:40 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2018-01-06 01:33:40 +0100
commitc4cb76bb13d01eaa93ee77ba5b490f5d1a991155 (patch)
tree6e10d26284fe8320e91976e825fb2d83c58286df
parenta7c7e4c642aa284cb57a855ea94bab90cc2dae3e (diff)
libihash: Make sure we do not remove a locp several times
Suggested by Brent W. Baccala. * libihash/ihash.c: Include <assert-backtrace.h>. (locp_remove): Assert that item->value is valid. * libihash/Makefile (HURDLIBS): Add shouldbeinlibc.
-rw-r--r--libihash/Makefile1
-rw-r--r--libihash/ihash.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/libihash/Makefile b/libihash/Makefile
index 3377ef41..7ceaf1d7 100644
--- a/libihash/Makefile
+++ b/libihash/Makefile
@@ -23,6 +23,7 @@ libname := libihash
SRCS = ihash.c murmur3.c
installhdrs = ihash.h
+HURDLIBS = shouldbeinlibc
OBJS = $(SRCS:.c=.o)
include ../Makeconf
diff --git a/libihash/ihash.c b/libihash/ihash.c
index 2fc70930..1b255443 100644
--- a/libihash/ihash.c
+++ b/libihash/ihash.c
@@ -29,6 +29,7 @@
#include <stdlib.h>
#include <stdint.h>
#include <assert.h>
+#include <assert-backtrace.h>
#include "ihash.h"
@@ -110,6 +111,7 @@ static inline void
locp_remove (hurd_ihash_t ht, hurd_ihash_locp_t locp)
{
struct _hurd_ihash_item *item = (struct _hurd_ihash_item *) locp;
+ assert_backtrace (hurd_ihash_value_valid (item->value));
if (ht->cleanup)
(*ht->cleanup) (item->value, ht->cleanup_data);
item->value = _HURD_IHASH_DELETED;