summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorJay Kwak <82421531+jkwak-work@users.noreply.github.com>2025-05-13 17:27:13 +0000
committerGitHub <noreply@github.com>2025-05-13 11:27:13 -0600
commit0db786ce42c28002a34c257aa208a2be61ab9957 (patch)
tree009ebe8b1f2a8283063ed6c7e5eac23d2d8c20a0 /source
parent6c262bc5c9a364cd8c6a4026dbb9f8034c500f11 (diff)
Fix invalid memory dereference in lower-to-ir (#7080)
A reference-counting pointer type released a heap memory object when it return from the function and we are trying to dereference it later. We should increment the ref-count by one by assigning it to the context before returning.
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-lower-to-ir.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/source/slang/slang-lower-to-ir.cpp b/source/slang/slang-lower-to-ir.cpp
index 1006a3489..a21c93f06 100644
--- a/source/slang/slang-lower-to-ir.cpp
+++ b/source/slang/slang-lower-to-ir.cpp
@@ -4520,6 +4520,8 @@ struct ExprLoweringVisitorBase : public ExprVisitor<Derived, LoweredValInfo>
boundMemberInfo->type = nullptr;
boundMemberInfo->base = loweredBase;
boundMemberInfo->declRef = callableDeclRef;
+
+ context->shared->extValues.add(boundMemberInfo);
return LoweredValInfo::boundMember(boundMemberInfo);
}
else if (auto propertyDeclRef = declRef.as<PropertyDecl>())