diff --git a/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp b/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp index 711dfdd775..56c55634a8 100644 --- a/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -1173,7 +1173,7 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka case PpAtomLineMacro: ppToken->ival = _parseContext.getCurrentLoc().line; snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival); - pushInput(new tUngotTokenInput(this, PpAtomConstInt, ppToken)); + UngetToken(PpAtomConstInt, ppToken); return 1; case PpAtomFileMacro: { @@ -1181,14 +1181,14 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka _parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_cpp_style_line_directive, "filename-based __FILE__"); ppToken->ival = _parseContext.getCurrentLoc().string; strlcpy(ppToken->name, ppToken->loc.getStringNameOrNum().c_str(), sizeof(ppToken->name)); - pushInput(new tUngotTokenInput(this, PpAtomConstInt, ppToken)); + UngetToken(PpAtomConstInt, ppToken); return 1; } case PpAtomVersionMacro: ppToken->ival = _parseContext.version; snprintf(ppToken->name, sizeof(ppToken->name), "%d", ppToken->ival); - pushInput(new tUngotTokenInput(this, PpAtomConstInt, ppToken)); + UngetToken(PpAtomConstInt, ppToken); return 1; default: @@ -1223,7 +1223,7 @@ int TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, bool newLineOka token = scanToken(ppToken); } if (token != '(') { - pushInput(new tUngotTokenInput(this, token, ppToken)); + UngetToken(token, ppToken); delete in; return 0; } diff --git a/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpContext.h b/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpContext.h index efc2a9df38..8bf82b52d0 100755 --- a/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpContext.h @@ -406,6 +406,7 @@ protected: // From PpTokens.cpp // void pushTokenStreamInput(TokenStream&, bool pasting = false); + void UngetToken(int token, TPpToken*); class tTokenInput : public tInput { public: diff --git a/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 839bd28df4..5c887c43d3 100755 --- a/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/deps/glslang/glslang/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -83,6 +83,11 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif +#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) +#ifndef snprintf +#define snprintf sprintf_s +#endif +#endif #include #include @@ -158,7 +163,8 @@ int TPpContext::TokenStream::getSubtoken() { if (current < data.size()) return data[current++]; - return EndOfInput; + else + return EndOfInput; } // back up one position in the stream @@ -341,4 +347,9 @@ int TPpContext::tUngotTokenInput::scan(TPpToken* ppToken) return ret; } +void TPpContext::UngetToken(int token, TPpToken* ppToken) +{ + pushInput(new tUngotTokenInput(this, token, ppToken)); +} + } // end namespace glslang