From ffc24783047139cff720c32ade68d4a9a79bfab7 Mon Sep 17 00:00:00 2001 From: "Mike D. Lowis" Date: Tue, 26 May 2015 15:38:55 -0400 Subject: [PATCH] NULL is now a valid value for an inserted association --- source/map/map.c | 6 ++++-- tests/test_map.c | 11 +++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/source/map/map.c b/source/map/map.c index 273660c..9a8771d 100644 --- a/source/map/map.c +++ b/source/map/map.c @@ -17,8 +17,10 @@ struct map_t { static void map_pair_free(void* obj) { - mem_release(((map_pair_t*)obj)->key); - mem_release(((map_pair_t*)obj)->value); + if(((map_pair_t*)obj)->key) + mem_release(((map_pair_t*)obj)->key); + if(((map_pair_t*)obj)->value) + mem_release(((map_pair_t*)obj)->value); } static map_pair_t* map_pair_new(uint32_t hash, void* key, void* value) diff --git a/tests/test_map.c b/tests/test_map.c index 5b36ce7..3d44c08 100644 --- a/tests/test_map.c +++ b/tests/test_map.c @@ -131,6 +131,17 @@ TEST_SUITE(Map) { mem_release(lup_val); } + TEST(Verify_map_lookup_should_return_NULL_if_the_associated_value_is_null) + { + map_t* map = map_new(cmp_new(NULL, cmp_int), hash_int); + void* lup_val = mem_box(42); + map_insert(map, mem_retain(lup_val), NULL); + CHECK(map_size(map) == 1); + CHECK(map_lookup(map, lup_val) == NULL); + mem_release(map); + mem_release(lup_val); + } + TEST(Verify_map_lookup_should_return_NULL_if_no_association_exists) { map_t* map = map_new(cmp_new(NULL, cmp_int), hash_int); -- 2.49.0