Memory: Don't use pool memory to store the entry point name in the intermediate representation.

This might address issue #221, which I couldn't reproduce.
This commit is contained in:
John Kessenich 2016-04-06 19:03:15 -06:00
parent 78a6b78810
commit 7e3e486344
4 changed files with 5 additions and 5 deletions

View File

@ -2126,7 +2126,7 @@ bool TGlslangToSpvTraverser::isShaderEntrypoint(const glslang::TIntermAggregate*
{
// have to ignore mangling and just look at the base name
int firstOpen = node->getName().find('(');
return node->getName().compare(0, firstOpen, glslangIntermediate->getEntryPoint()) == 0;
return node->getName().compare(0, firstOpen, glslangIntermediate->getEntryPoint().c_str()) == 0;
}
// Make all the functions, skeletally, without actually visiting their bodies.

View File

@ -986,7 +986,7 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc,
//
// Raise error message if main function takes any parameters or returns anything other than void
//
if (function.getName() == intermediate.getEntryPoint()) {
if (function.getName() == intermediate.getEntryPoint().c_str()) {
if (function.getParamCount() > 0)
error(loc, "function cannot take any parameter(s)", function.getName().c_str(), "");
if (function.getType().getBasicType() != EbtVoid)

View File

@ -149,7 +149,7 @@ public:
void setSource(EShSource s) { source = s; }
EShSource getSource() const { return source; }
void setEntryPoint(const char* ep) { entryPoint = ep; }
const TString& getEntryPoint() const { return entryPoint; }
const std::string& getEntryPoint() const { return entryPoint; }
void setVersion(int v) { version = v; }
int getVersion() const { return version; }
void setProfile(EProfile p) { profile = p; }
@ -347,7 +347,7 @@ protected:
const EShLanguage language; // stage, known at construction time
EShSource source; // source language, known a bit later
TString entryPoint;
std::string entryPoint;
EProfile profile;
int version;
int spv;

View File

@ -709,7 +709,7 @@ TIntermAggregate* HlslParseContext::handleFunctionDefinition(const TSourceLoc& l
currentFunctionType = new TType(EbtVoid);
functionReturnsValue = false;
inEntrypoint = (function.getName() == intermediate.getEntryPoint());
inEntrypoint = (function.getName() == intermediate.getEntryPoint().c_str());
//
// New symbol table scope for body of function plus its arguments