From a67c7c057e4d50f1784a41d51352028608705f7d Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Tue, 21 Jul 2015 23:01:34 -0500 Subject: [PATCH] Added patty_dict_delete() --- include/patty/dict.h | 2 ++ src/dict.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/patty/dict.h b/include/patty/dict.h index ae2bccb..5588526 100644 --- a/include/patty/dict.h +++ b/include/patty/dict.h @@ -41,6 +41,8 @@ void *patty_dict_get(patty_dict *dict, void *key, size_t keysz); void *patty_dict_set(patty_dict *dict, void *key, size_t keysz, void *value); +void *patty_dict_delete(patty_dict *dict, void *key, size_t keysz); + void patty_dict_destroy(patty_dict *dict); #endif /* _PATTY_DICT_H */ diff --git a/src/dict.c b/src/dict.c index d933d95..1a3e321 100644 --- a/src/dict.c +++ b/src/dict.c @@ -158,6 +158,23 @@ error_malloc_bucket: return NULL; } +void *patty_dict_delete(patty_dict *dict, void *key, size_t keysz) { + patty_dict_slot *slot; + void *value; + + uint32_t hash = patty_hash(key, keysz); + + if ((slot = patty_dict_slot_find(dict, hash)) == NULL) { + return NULL; + } + + value = slot->value; + + memset(slot, '\0', sizeof(*slot)); + + return value; +} + static int dict_item_release(void *key, size_t keysz, void *value, void *ctx) { free(value);