summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang-check-expr.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index 7d4fbdf4c..1fb2b336f 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -2378,6 +2378,18 @@ Expr* SemanticsExprVisitor::visitIndexExpr(IndexExpr* subscriptExpr)
IntegerConstantExpressionCoercionType::AnyInteger,
nullptr,
ConstantFoldingKind::LinkTime);
+
+ // Validate that array size is greater than zero
+ if (auto constElementCount = as<ConstantIntVal>(elementCount))
+ {
+ if (constElementCount->getValue() <= 0)
+ {
+ getSink()->diagnose(
+ subscriptExpr->indexExprs[0],
+ Diagnostics::invalidArraySize);
+ return CreateErrorExpr(subscriptExpr);
+ }
+ }
}
else if (subscriptExpr->indexExprs.getCount() != 0)
{