From 90ebc2d86c62ed2eecf17eeb5d9fddad690b666d Mon Sep 17 00:00:00 2001 From: Tyge Løvset Date: Thu, 4 Feb 2021 07:51:45 +0100 Subject: Fixed leak in csmap erase. --- stc/csmap.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/stc/csmap.h b/stc/csmap.h index d726a836..20889573 100644 --- a/stc/csmap.h +++ b/stc/csmap.h @@ -444,19 +444,18 @@ int main(void) { if (c != 0) \ d[tn].link[c == -1] = C##_##X##_erase_r_(d, d[tn].link[c == -1], rkey, erased); \ else { \ + if (!*erased) {C##_##X##_value_del(&d[tn].value); *erased = 1;} \ if (d[tn].link[0] && d[tn].link[1]) { \ tx = d[tn].link[0]; \ while (d[tx].link[1]) \ tx = d[tx].link[1]; \ - C##_##X##_value_del(&d[tn].value); \ d[tn].value = d[tx].value; /* move */ \ raw = keyToRaw(KEY_REF_##C(&d[tn].value)); \ d[tn].link[0] = C##_##X##_erase_r_(d, d[tn].link[0], &raw, erased); \ - } else { \ + } else { /* unlink node */ \ tx = tn; \ tn = d[tn].link[ d[tn].link[0] == 0 ]; \ C##_##X##_node_del_(d, tx); \ - *erased = 1; \ } \ } \ tx = d[tn].link[1]; \ -- cgit v1.2.3