From 3494d71cfa831eb57a69149b3092152d5c7743dc Mon Sep 17 00:00:00 2001
From: John Kessenich <cepheus@frii.com>
Date: Tue, 28 Feb 2017 18:39:20 -0700
Subject: [PATCH] PP: Fix issue #738: don't assert on characters within a
 string.

---
 Test/badChars.frag                                   | 1 +
 Test/baseResults/badChars.frag.out                   | 3 ++-
 glslang/Include/revision.h                           | 2 +-
 glslang/MachineIndependent/preprocessor/PpContext.h  | 2 +-
 glslang/MachineIndependent/preprocessor/PpTokens.cpp | 6 +++---
 5 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/Test/badChars.frag b/Test/badChars.frag
index d67bf3a5e..3e9700d93 100644
--- a/Test/badChars.frag
+++ b/Test/badChars.frag
@@ -4,3 +4,4 @@
 #if
 #endif
 int aÿ
+#define A "ÿ
\ No newline at end of file
diff --git a/Test/baseResults/badChars.frag.out b/Test/baseResults/badChars.frag.out
index e9ebff729..9a2aecab5 100644
--- a/Test/baseResults/badChars.frag.out
+++ b/Test/baseResults/badChars.frag.out
@@ -5,8 +5,9 @@ ERROR: 0:3: '#error' : A <bad token> B
 ERROR: 0:4: 'preprocessor evaluation' : bad expression 
 ERROR: 0:4: '#if' : unexpected tokens following directive 
 ERROR: 0:6: '€' : unexpected token 
+ERROR: 0:7: 'string' : End of line in string 
 ERROR: 0:7: '' :  syntax error
-ERROR: 7 compilation errors.  No code generated.
+ERROR: 8 compilation errors.  No code generated.
 
 
 Shader version: 100
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index d1bce528c..ccc2152a6 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "Overload400-PrecQual.1861"
+#define GLSLANG_REVISION "Overload400-PrecQual.1865"
 #define GLSLANG_DATE "28-Feb-2017"
diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h
index f7b352200..f1c41abd3 100644
--- a/glslang/MachineIndependent/preprocessor/PpContext.h
+++ b/glslang/MachineIndependent/preprocessor/PpContext.h
@@ -236,7 +236,7 @@ public:
         void reset() { current = 0; }
 
     protected:
-        void putSubtoken(int);
+        void putSubtoken(char);
         int getSubtoken();
         void ungetSubtoken();
 
diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
index 32d2b0b74..7fa06a5a4 100644
--- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp
@@ -96,9 +96,8 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 namespace glslang {
 
 // push onto back of stream
-void TPpContext::TokenStream::putSubtoken(int subtoken)
+void TPpContext::TokenStream::putSubtoken(char subtoken)
 {
-    assert((subtoken & ~0xff) == 0);
     data.push_back(static_cast<unsigned char>(subtoken));
 }
 
@@ -125,7 +124,8 @@ void TPpContext::TokenStream::putToken(int token, TPpToken* ppToken)
     const char* s;
     char* str = NULL;
 
-    putSubtoken(token);
+    assert((token & ~0xff) == 0);
+    putSubtoken(static_cast<char>(token));
 
     switch (token) {
     case PpAtomIdentifier:
-- 
GitLab