Skip to content

Commit 71a75af

Browse files
committed
Extend hashlist_destroy().
Signed-off-by: Timothy Rule (VM/EMT3) <[email protected]>
1 parent b902d9a commit 71a75af

File tree

3 files changed

+24
-17
lines changed

3 files changed

+24
-17
lines changed

dse/clib/collections/hashlist.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ static __inline__ void hashlist_destroy(HashList* h)
3131
if (h) hashmap_destroy(&h->hash_map);
3232
}
3333

34+
static __inline__ void hashlist_destroy_ext(HashList* h, HashMapDestroyItemCallback cb, void* data)
35+
{
36+
if (h) hashmap_destroy_ext(&h->hash_map, cb, data);
37+
}
38+
3439
static __inline__ uint32_t hashlist_length(HashList* h)
3540
{
3641
if (h) return h->hash_map.used_nodes;
@@ -69,7 +74,7 @@ static __inline__ void* hashlist_ntl(
6974

7075
// Optionally destroy the original HashList.
7176
if (destroy) {
72-
hashlist_destroy(h);
77+
hashlist_destroy_ext(h, NULL, NULL);
7378
}
7479

7580
return array;

tests/collections/test_hashlist.c

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ void test_hashlist_ntl(void** state)
3636
{
3737
UNUSED(state);
3838

39-
NamedObject foo = { .name = "foo" };
40-
NamedObject bar = { .name = "bar" };
39+
NamedObject* foo = malloc(sizeof(NamedObject));
40+
NamedObject* bar = malloc(sizeof(NamedObject));
41+
*foo = (NamedObject) { .name = "foo" };
42+
*bar = (NamedObject) { .name = "bar" };
4143

4244
HashList h;
4345
hashlist_init(&h, 2);
44-
hashlist_append(&h, &foo);
45-
hashlist_append(&h, &bar);
46+
hashlist_append(&h, foo);
47+
hashlist_append(&h, bar);
4648

4749
// Call hashlist_ntl to convert to NTL.
4850
NamedObject* ntl = hashlist_ntl(&h, sizeof(NamedObject), false);

tests/data/test_marshal.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -685,12 +685,12 @@ void test_marshal__signalmap_generate(void** state)
685685
MarshalMapSpec source = { .count = tc[i].source.count,
686686
.name = tc[i].source.name,
687687
.signal = tc[i].source.signal,
688-
.scalar = &sou_s_ptr };
688+
.scalar = sou_s_ptr };
689689
double* sig_s_ptr = tc[i].signal.scalar;
690690
MarshalMapSpec signal = { .count = tc[i].signal.count,
691691
.name = tc[i].signal.name,
692692
.signal = tc[i].signal.signal,
693-
.scalar = &sig_s_ptr };
693+
.scalar = sig_s_ptr };
694694

695695
SimpleSet ex_signals;
696696
set_init(&ex_signals);
@@ -706,8 +706,8 @@ void test_marshal__signalmap_generate(void** state)
706706
} else {
707707
assert_string_equal(msm->name, signal.name);
708708
assert_int_equal(msm->count, tc[i].expect.count);
709-
assert_ptr_equal(msm->signal.scalar, &sig_s_ptr);
710-
assert_ptr_equal(msm->source.scalar, &sou_s_ptr);
709+
assert_ptr_equal(msm->signal.scalar, sig_s_ptr);
710+
assert_ptr_equal(msm->source.scalar, sou_s_ptr);
711711

712712
for (size_t x = 0; x < tc[i].expect.count; x++) {
713713
assert_int_equal(
@@ -794,14 +794,14 @@ void test_marshal__signalmap_scalar_out(void** state)
794794
msm[0].name = (char*)tc[i].name;
795795
msm[0].count = tc[i].count;
796796
msm[0].signal.index = tc[i].signal_idx;
797-
msm[0].signal.scalar = &sig_s_ptr;
797+
msm[0].signal.scalar = sig_s_ptr;
798798
msm[0].source.index = tc[i].source_idx;
799-
msm[0].source.scalar = &src_s_ptr;
799+
msm[0].source.scalar = src_s_ptr;
800800

801801
assert_ptr_equal(sig_s_ptr, tc[i].signal_scalar);
802-
assert_ptr_equal(sig_s_ptr, *msm[0].signal.scalar);
802+
assert_ptr_equal(sig_s_ptr, msm[0].signal.scalar);
803803
assert_ptr_equal(src_s_ptr, tc[i].source_scalar);
804-
assert_ptr_equal(src_s_ptr, *msm[0].source.scalar);
804+
assert_ptr_equal(src_s_ptr, msm[0].source.scalar);
805805

806806
for (size_t j = 0; j < msm[0].count; j++) {
807807
assert_double_equal(0, src_s_ptr[tc[i].source_idx[j]], 0.0);
@@ -862,14 +862,14 @@ void test_marshal__signalmap_scalar_in(void** state)
862862
msm[0].name = (char*)tc[i].name;
863863
msm[0].count = tc[i].count;
864864
msm[0].signal.index = tc[i].signal_idx;
865-
msm[0].signal.scalar = &sig_s_ptr;
865+
msm[0].signal.scalar = sig_s_ptr;
866866
msm[0].source.index = tc[i].source_idx;
867-
msm[0].source.scalar = &src_s_ptr;
867+
msm[0].source.scalar = src_s_ptr;
868868

869869
assert_ptr_equal(sig_s_ptr, tc[i].signal_scalar);
870-
assert_ptr_equal(sig_s_ptr, *msm[0].signal.scalar);
870+
assert_ptr_equal(sig_s_ptr, msm[0].signal.scalar);
871871
assert_ptr_equal(src_s_ptr, tc[i].source_scalar);
872-
assert_ptr_equal(src_s_ptr, *msm[0].source.scalar);
872+
assert_ptr_equal(src_s_ptr, msm[0].source.scalar);
873873

874874
for (size_t j = 0; j < msm[0].count; j++) {
875875
assert_double_equal(0, sig_s_ptr[tc[i].signal_idx[j]], 0.0);

0 commit comments

Comments
 (0)