From 91b977e17217eea47c2bd0568e52df9db0c3c29d Mon Sep 17 00:00:00 2001 From: John Kessenich Date: Sat, 25 Jul 2015 18:14:09 -0600 Subject: [PATCH] Issue #39: Prevent problem of inserting a zero-length symbol after cascading errors. --- glslang/MachineIndependent/ParseHelper.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a2d81ca..349c4b5 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -365,7 +365,7 @@ void C_DECL TParseContext::error(TSourceLoc loc, const char* szReason, const cha const char* szExtraInfoFormat, ...) { if (messages & EShMsgOnlyPreprocessor) - return; + return; va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); @@ -1626,12 +1626,13 @@ void TParseContext::variableCheck(TIntermTyped*& nodePtr) error(symbol->getLoc(), "undeclared identifier", symbol->getName().c_str(), ""); // Add to symbol table to prevent future error messages on the same name + if (symbol->getName().size() > 0) { + TVariable* fakeVariable = new TVariable(&symbol->getName(), TType(EbtFloat)); + symbolTable.insert(*fakeVariable); - TVariable* fakeVariable = new TVariable(&symbol->getName(), TType(EbtFloat)); - symbolTable.insert(*fakeVariable); - - // substitute a symbol node for this new variable - nodePtr = intermediate.addSymbol(*fakeVariable, symbol->getLoc()); + // substitute a symbol node for this new variable + nodePtr = intermediate.addSymbol(*fakeVariable, symbol->getLoc()); + } } else { switch (symbol->getQualifier().storage) { case EvqPointCoord: -- 2.7.4