From 3494d71cfa831eb57a69149b3092152d5c7743dc Mon Sep 17 00:00:00 2001 From: John Kessenich 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 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(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(token)); switch (token) { case PpAtomIdentifier: