From 06481e2d0ac75f2142456dbcb9afe59f42dee095 Mon Sep 17 00:00:00 2001 From: Zhicheng Wang <1627343141@qq.com> Date: Fri, 3 Jan 2025 16:56:31 +0800 Subject: [PATCH] fix wrong destroctor call --- blobtree_structure/src/blobtree.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/blobtree_structure/src/blobtree.cpp b/blobtree_structure/src/blobtree.cpp index d98ac6d..a5cd138 100644 --- a/blobtree_structure/src/blobtree.cpp +++ b/blobtree_structure/src/blobtree.cpp @@ -83,7 +83,11 @@ BS_API void clear_blobtree() noexcept virtual_node_t push_primitive_node(primitive_node_t&& primitive_node) { - primitives.emplace_back(std::move(primitive_node)); + primitives.emplace_back(primitive_node); + primitive_node.desc = + nullptr; // NOTE: primitives.back().desc and primitive_node.desc share same memory, so when this + // function returns, primitive_node.desc will be invalidated, so as primitives.back().desc, which outputs + // errors. Thus, we manually set primitive_node.desc to nullptr to avoid this problem. node_t node{standard_new_node}; node_fetch_primitive_index(node) = static_cast(primitives.size() - 1);