From a18dca27392b257ba2cc58ceabdf15471f34ee25 Mon Sep 17 00:00:00 2001 From: jsmall-nvidia Date: Tue, 26 Sep 2023 15:40:22 -0400 Subject: Fix for epoch/ASTBuilder* nullptr issue (#3240) * Fix issue with failing tests tests/serialization/serialized-module-test.slang tests/serialization/extern/extern-test.slang * Fix issue with session destruction order on Session. * Improve comment. --- source/slang/slang-ast-base.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'source/slang/slang-ast-base.cpp') diff --git a/source/slang/slang-ast-base.cpp b/source/slang/slang-ast-base.cpp index 7fa0a8886..60be7a563 100644 --- a/source/slang/slang-ast-base.cpp +++ b/source/slang/slang-ast-base.cpp @@ -22,11 +22,14 @@ void NodeBase::_initDebug(ASTNodeType inAstNodeType, ASTBuilder* inAstBuilder) } DeclRefBase* Decl::getDefaultDeclRef() { - auto astBuilder = getCurrentASTBuilder(); - if (astBuilder && astBuilder->getEpoch() != m_defaultDeclRefEpoch || !m_defaultDeclRef) + if (auto astBuilder = getCurrentASTBuilder()) { - m_defaultDeclRef = astBuilder->getOrCreate(this); - m_defaultDeclRefEpoch = astBuilder->getEpoch(); + const Index currentEpoch = astBuilder->getEpoch(); + if (currentEpoch != m_defaultDeclRefEpoch || !m_defaultDeclRef) + { + m_defaultDeclRef = astBuilder->getOrCreate(this); + m_defaultDeclRefEpoch = currentEpoch; + } } return m_defaultDeclRef; } -- cgit v1.2.3