From bbfa3746f31e31684452b7dd24c58ad25a94910e Mon Sep 17 00:00:00 2001 From: Dennis Goodlett Date: Sun, 10 Dec 2023 20:52:46 -0500 Subject: [PATCH] Fix pop from empty block stack --- ASTree.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ASTree.cpp b/ASTree.cpp index 108e4e4a7..8fff71b66 100644 --- a/ASTree.cpp +++ b/ASTree.cpp @@ -1306,6 +1306,12 @@ PycRef BuildFromCode(PycRef code, PycModule* mod) stack_hist.pop(); } + if (blocks.size() == 1 && !source.atEof()) { + fprintf(stderr, "Warning: Refusing to pop last block when there is more code to parse pos: %d OP: %02x\n", pos, opcode & 0xff); + cleanBuild = false; + break; + } + PycRef prev = curblock; PycRef nil; bool push = true; @@ -1589,6 +1595,12 @@ PycRef BuildFromCode(PycRef code, PycModule* mod) curblock->removeLast(); } + if (blocks.size() == 1 && !source.atEof()) { + fprintf(stderr, "Warning: Refusing to pop last block when there is more code to parse pos: %d OP: %02x\n", pos, opcode & 0xff); + cleanBuild = false; + break; + } + if (curblock->blktype() == ASTBlock::BLK_IF || curblock->blktype() == ASTBlock::BLK_ELIF || curblock->blktype() == ASTBlock::BLK_ELSE