diff --git a/src/Lua/CodeAnalysis/Compilation/Parser.cs b/src/Lua/CodeAnalysis/Compilation/Parser.cs index 6680058d..48a8caa1 100644 --- a/src/Lua/CodeAnalysis/Compilation/Parser.cs +++ b/src/Lua/CodeAnalysis/Compilation/Parser.cs @@ -125,6 +125,11 @@ public void LeaveLevel() public TempBlock EnterLevel() { + if (!RuntimeHelpers.TryEnsureSufficientExecutionStack()) + { + Scanner.SyntaxError("too many syntax levels"); + } + Scanner.L.CallCount++; CheckLimit(Scanner.L.CallCount, MaxCallCount, "Go levels"); return new(Scanner.L);