Fix bad-free in psync_interval_tree_free
Interval tree nodes are allocated via pmem_malloc, which prepends a 16-byte header. Passing bare free() to ptree_for_each_element_call_safe freed the wrong address. Add free_interval_tree_node() helper that uses pmem_free and use it in psync_interval_tree_free. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a48be6dbc3
commit
8916acb4f6
|
|
@ -143,9 +143,13 @@ void psync_interval_tree_remove(psync_interval_tree_t **tree, uint64_t from,
|
|||
}
|
||||
}
|
||||
|
||||
static void free_interval_tree_node(psync_interval_tree_t *e) {
|
||||
pmem_free(PMEM_SUBSYS_OTHER, e);
|
||||
}
|
||||
|
||||
void psync_interval_tree_free(psync_interval_tree_t *tree) {
|
||||
if (tree)
|
||||
ptree_for_each_element_call_safe(&tree->tree, psync_interval_tree_t, tree, free);
|
||||
ptree_for_each_element_call_safe(&tree->tree, psync_interval_tree_t, tree, free_interval_tree_node);
|
||||
}
|
||||
|
||||
static psync_interval_tree_t *
|
||||
|
|
|
|||
Loading…
Reference in New Issue