From fa83b7df5a0711bf5f4a5162cc33b0a4123a53c7 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Thu, 22 Oct 2026 15:06:13 +0000 Subject: fix(arrays): reject inverted bounds and check array allocation Constant inverted bounds are a compile error and other bounds are checked at run time. Allocation sizes use overflow-checked arithmetic, and a NULL malloc (including the BYVAL copy) reports that the array is too large. Co-Authored-By: Claude Sonnet 5.5 --- lib/CodeGen/ArrayOutput.cc | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/CodeGen/ArrayOutput.cc') diff --git a/lib/CodeGen/ArrayOutput.cc b/lib/CodeGen/ArrayOutput.cc index 9306823..99b4a91 100644 --- a/lib/CodeGen/ArrayOutput.cc +++ b/lib/CodeGen/ArrayOutput.cc @@ -62,6 +62,8 @@ void ArrayHandler::emitPrintLoop(const std::string &Name, } Function *TheFunction = Builder->GetInsertBlock()->getParent(); + // Do-while shape: safe because every array has at least one element per + // dimension (inverted bounds are rejected at declaration). BasicBlock *LoopBB = BasicBlock::Create(*TheContext, "arr_loop", TheFunction); BasicBlock *AfterBB = BasicBlock::Create(*TheContext, "arr_after", TheFunction); -- cgit v1.3.1-4-g156e