From 5d35d166004a0ccf82eb12fb2b8e2bdf3d1a8a14 Mon Sep 17 00:00:00 2001 From: Pavel Uhanov <pavel.uhanov@demlabs.net> Date: Thu, 20 Jul 2023 13:24:12 +0700 Subject: [PATCH] [*] add datum_index clearing to s_callback_cs_blocks_purge --- modules/type/blocks/dap_chain_cs_blocks.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index bfa5077be0..34d5a7b2df 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -877,13 +877,24 @@ static void s_callback_cs_blocks_purge(dap_chain_t *a_chain) { dap_chain_cs_blocks_t *l_blocks = DAP_CHAIN_CS_BLOCKS(a_chain); pthread_rwlock_wrlock(&PVT(l_blocks)->rwlock); - dap_chain_block_cache_t *l_block, *l_block_tmp; + dap_chain_block_cache_t *l_block = NULL, *l_block_tmp = NULL; HASH_ITER(hh, PVT(l_blocks)->blocks, l_block, l_block_tmp) { HASH_DEL(PVT(l_blocks)->blocks, l_block); DAP_DELETE(l_block->block); dap_chain_block_cache_delete(l_block); } pthread_rwlock_unlock(&PVT(l_blocks)->rwlock); + + dap_chain_block_datum_index_t *l_datum_index = NULL, *l_datum_index_tmp = NULL; + pthread_rwlock_wrlock(&PVT(l_blocks)->datums_rwlock); + HASH_ITER(hh, PVT(l_blocks)->datum_index, l_datum_index, l_datum_index_tmp) { + HASH_DEL(PVT(l_blocks)->datum_index, l_datum_index); + DAP_DELETE(l_datum_index); + l_datum_index = NULL; + } + pthread_rwlock_unlock(&PVT(l_blocks)->datums_rwlock); + PVT(l_blocks)->blocks_count = 0; + dap_chain_block_chunks_delete(PVT(l_blocks)->chunks); PVT(l_blocks)->block_cache_last = NULL; PVT(l_blocks)->block_cache_first = NULL; -- GitLab