From c4cb76bb13d01eaa93ee77ba5b490f5d1a991155 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sat, 6 Jan 2018 01:33:40 +0100 Subject: libihash: Make sure we do not remove a locp several times Suggested by Brent W. Baccala. * libihash/ihash.c: Include . (locp_remove): Assert that item->value is valid. * libihash/Makefile (HURDLIBS): Add shouldbeinlibc. --- libihash/Makefile | 1 + libihash/ihash.c | 2 ++ 2 files changed, 3 insertions(+) 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 #include #include +#include #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; -- cgit v1.2.3