Skip to content

Commit 7e00014

Browse files
committed
evaluator: Don't evaluate pointees of pointers during sizeof expression evaluation
1 parent 0758f18 commit 7e00014

File tree

2 files changed

+3
-3
lines changed

2 files changed

+3
-3
lines changed

lib/include/pl/patterns/pattern_pointer.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ namespace pl::ptrn {
5656
if (this->getSection() == id)
5757
return;
5858

59-
this->m_pointedAt->setSection(id);
59+
if (this->m_pointedAt != nullptr)
60+
this->m_pointedAt->setSection(id);
6061

6162
Pattern::setSection(id);
6263
}

lib/source/pl/core/ast/ast_node_pointer_variable_decl.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ namespace pl::core::ast {
7777

7878
auto pointerEndOffset = evaluator->getBitwiseReadOffset();
7979

80-
{
80+
if (evaluator->getSectionId() != ptrn::Pattern::InstantiationSectionId) {
8181
i128 pointerAddress = pattern->getValue().toSigned();
8282

8383
evaluator->setReadOffset(pointerStartOffset);
@@ -103,7 +103,6 @@ namespace pl::core::ast {
103103
if (this->m_placementSection != nullptr)
104104
pattern->setSection(evaluator->getSectionId());
105105

106-
107106
if (this->m_placementOffset != nullptr && !evaluator->isGlobalScope()) {
108107
evaluator->setBitwiseReadOffset(startOffset);
109108
} else {

0 commit comments

Comments
 (0)