From 9b5668c8efa022e066a556d69834da9e564b7deb Mon Sep 17 00:00:00 2001
From: John Kessenich <cepheus@frii.com>
Date: Tue, 9 Jan 2018 22:32:42 -0700
Subject: [PATCH] HLSL: Fix #1214: check for nesting in loop/switch of break
 statements.

---
 hlsl/hlslGrammar.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 32b483ad9..2fd393363 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -3789,6 +3789,10 @@ bool HlslGrammar::acceptJumpStatement(TIntermNode*& statement)
         break;
     case EHTokBreak:
         statement = intermediate.addBranch(EOpBreak, token.loc);
+        if (parseContext.loopNestingLevel == 0 && parseContext.switchSequenceStack.size() == 0) {
+            expected("loop or switch");
+            return false;
+        }
         break;
     case EHTokDiscard:
         statement = intermediate.addBranch(EOpKill, token.loc);
-- 
GitLab