diff --git a/libSyntax/ast_novel.cpp b/libSyntax/ast_novel.cpp index 50fa144..737b532 100644 --- a/libSyntax/ast_novel.cpp +++ b/libSyntax/ast_novel.cpp @@ -117,7 +117,7 @@ void example_novel::Document::cacheLoad() } example_novel::AbstractImpl::AbstractImpl(std::shared_ptr rule_bind) - : ExpressionElement(rule_bind) {} + : ExpressionElement(rule_bind) { parent_store.reset(); } QList > AbstractImpl::selfTokens() const { auto tokensx = ast_basic::ExpressionElement::tokens(); @@ -131,7 +131,7 @@ QList > AbstractImpl::selfTokens() c std::shared_ptr example_novel::AbstractImpl::parent() const { - return this->parent_store; + return this->parent_store.lock(); } void example_novel::AbstractImpl::setParent(std::shared_ptr inst) diff --git a/libSyntax/ast_novel.h b/libSyntax/ast_novel.h index 411a59e..9fc4859 100644 --- a/libSyntax/ast_novel.h +++ b/libSyntax/ast_novel.h @@ -17,7 +17,7 @@ namespace example_novel class LIBSYNTAX_EXPORT AbstractImpl : public ast_basic::ExpressionElement, public ast_gen::SyntaxElement { private: - std::shared_ptr parent_store = nullptr; + std::weak_ptr parent_store; public: explicit AbstractImpl(std::shared_ptr rule_bind); diff --git a/报告20240618-1929.diagsession b/报告20240618-1929.diagsession new file mode 100644 index 0000000..d6e5a0e Binary files /dev/null and b/报告20240618-1929.diagsession differ