disable escape sequences for #line and #error
This commit is contained in:
parent
f333272eb5
commit
13444545a9
@ -9,8 +9,8 @@ hlsl.pp.line4.frag
|
|||||||
EntryPoint Fragment 5 "MainPs" 70 74
|
EntryPoint Fragment 5 "MainPs" 70 74
|
||||||
ExecutionMode 5 OriginUpperLeft
|
ExecutionMode 5 OriginUpperLeft
|
||||||
1: String "hlsl.pp.line4.frag"
|
1: String "hlsl.pp.line4.frag"
|
||||||
17: String "C:\Users\Greg\shaders\line\foo4.frag"
|
17: String "C:\\Users\\Greg\\shaders\\line\\foo4.frag"
|
||||||
32: String "C:\Users\Greg\shaders\line\u1.h"
|
32: String "C:\\Users\\Greg\\shaders\\line\\u1.h"
|
||||||
Source HLSL 500 1 "// OpModuleProcessed auto-map-locations
|
Source HLSL 500 1 "// OpModuleProcessed auto-map-locations
|
||||||
// OpModuleProcessed auto-map-bindings
|
// OpModuleProcessed auto-map-bindings
|
||||||
// OpModuleProcessed entry-point MainPs
|
// OpModuleProcessed entry-point MainPs
|
||||||
|
@ -722,7 +722,9 @@ int TPpContext::CPPline(TPpToken* ppToken)
|
|||||||
const char* sourceName = nullptr; // Optional source file name.
|
const char* sourceName = nullptr; // Optional source file name.
|
||||||
bool lineErr = false;
|
bool lineErr = false;
|
||||||
bool fileErr = false;
|
bool fileErr = false;
|
||||||
|
disableEscapeSequences = true;
|
||||||
token = eval(token, MIN_PRECEDENCE, false, lineRes, lineErr, ppToken);
|
token = eval(token, MIN_PRECEDENCE, false, lineRes, lineErr, ppToken);
|
||||||
|
disableEscapeSequences = false;
|
||||||
if (! lineErr) {
|
if (! lineErr) {
|
||||||
lineToken = lineRes;
|
lineToken = lineRes;
|
||||||
if (token == '\n')
|
if (token == '\n')
|
||||||
@ -765,7 +767,9 @@ int TPpContext::CPPline(TPpToken* ppToken)
|
|||||||
// Handle #error
|
// Handle #error
|
||||||
int TPpContext::CPPerror(TPpToken* ppToken)
|
int TPpContext::CPPerror(TPpToken* ppToken)
|
||||||
{
|
{
|
||||||
|
disableEscapeSequences = true;
|
||||||
int token = scanToken(ppToken);
|
int token = scanToken(ppToken);
|
||||||
|
disableEscapeSequences = false;
|
||||||
std::string message;
|
std::string message;
|
||||||
TSourceLoc loc = ppToken->loc;
|
TSourceLoc loc = ppToken->loc;
|
||||||
|
|
||||||
|
3
glslang/MachineIndependent/preprocessor/PpContext.cpp
Executable file → Normal file
3
glslang/MachineIndependent/preprocessor/PpContext.cpp
Executable file → Normal file
@ -87,7 +87,8 @@ namespace glslang {
|
|||||||
TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, TShader::Includer& inclr) :
|
TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, TShader::Includer& inclr) :
|
||||||
preamble(0), strings(0), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false),
|
preamble(0), strings(0), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false),
|
||||||
rootFileName(rootFileName),
|
rootFileName(rootFileName),
|
||||||
currentSourceFile(rootFileName)
|
currentSourceFile(rootFileName),
|
||||||
|
disableEscapeSequences(false)
|
||||||
{
|
{
|
||||||
ifdepth = 0;
|
ifdepth = 0;
|
||||||
for (elsetracker = 0; elsetracker < maxIfNesting; elsetracker++)
|
for (elsetracker = 0; elsetracker < maxIfNesting; elsetracker++)
|
||||||
|
@ -695,6 +695,7 @@ protected:
|
|||||||
std::string currentSourceFile;
|
std::string currentSourceFile;
|
||||||
|
|
||||||
std::istringstream strtodStream;
|
std::istringstream strtodStream;
|
||||||
|
bool disableEscapeSequences;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace glslang
|
} // end namespace glslang
|
||||||
|
@ -1030,7 +1030,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken)
|
|||||||
ch = getch();
|
ch = getch();
|
||||||
while (ch != '"' && ch != '\n' && ch != EndOfInput) {
|
while (ch != '"' && ch != '\n' && ch != EndOfInput) {
|
||||||
if (len < MaxTokenLength) {
|
if (len < MaxTokenLength) {
|
||||||
if (ch == '\\') {
|
if (ch == '\\' && !pp->disableEscapeSequences) {
|
||||||
int nextCh = getch();
|
int nextCh = getch();
|
||||||
switch (nextCh) {
|
switch (nextCh) {
|
||||||
case '\'': ch = 0x27; break;
|
case '\'': ch = 0x27; break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user