From dee9a3614c6312943fc82f39a485c319db19030a Mon Sep 17 00:00:00 2001 From: dimgigov Date: Sun, 31 May 2026 20:27:48 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20infinite-loop=20guard=20in=20block=20par?= =?UTF-8?q?ser,=20retTypeKind/alloca=20type=20fixes=20=E2=80=94=2011/14=20?= =?UTF-8?q?pass?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _selfhost/src/parser.bux | 6 ++++++ src_bux/parser.bux | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/_selfhost/src/parser.bux b/_selfhost/src/parser.bux index 3648bb6..d00dd7b 100644 --- a/_selfhost/src/parser.bux +++ b/_selfhost/src/parser.bux @@ -662,7 +662,13 @@ func parserParseBlock(p: *Parser) -> *Block { discard parserAdvance(p); continue; } + let beforePos: int = p.pos; let s: *Stmt = parserParseStmt(p); + // Infinite-loop safeguard: if no progress, advance past current token + if p.pos == beforePos { + discard parserAdvance(p); + continue; + } if s != null as *Stmt { s.nextStmt = null as *Stmt; if b.firstStmt == null as *Stmt { diff --git a/src_bux/parser.bux b/src_bux/parser.bux index 3648bb6..d00dd7b 100644 --- a/src_bux/parser.bux +++ b/src_bux/parser.bux @@ -662,7 +662,13 @@ func parserParseBlock(p: *Parser) -> *Block { discard parserAdvance(p); continue; } + let beforePos: int = p.pos; let s: *Stmt = parserParseStmt(p); + // Infinite-loop safeguard: if no progress, advance past current token + if p.pos == beforePos { + discard parserAdvance(p); + continue; + } if s != null as *Stmt { s.nextStmt = null as *Stmt; if b.firstStmt == null as *Stmt {