Fix #777: don't parse .suffix if <stage> is provided.
Adding a test for this also uncovered an extraneous \r in the runtests script,
fixed now.
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 3c36025..0da690e 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -356,8 +356,7 @@
if (argc > 0) {
argc--;
argv++;
- }
- else
+ } else
Error("no <stage> specified for -S");
break;
case 'G':
@@ -533,14 +532,14 @@
EShLanguage stage;
std::string fileName;
char** text; // memory owned/managed externally
- const char* fileNameList[1];
+ const char* fileNameList[1];
// Need to have a special constructors to adjust the fileNameList, since back end needs a list of ptrs
ShaderCompUnit(EShLanguage istage, std::string &ifileName, char** itext)
{
stage = istage;
fileName = ifileName;
- text = itext;
+ text = itext;
fileNameList[0] = fileName.c_str();
}
@@ -848,21 +847,23 @@
EShLanguage FindLanguage(const std::string& name, bool parseSuffix)
{
size_t ext = 0;
+ std::string suffix;
- // Search for a suffix on a filename: e.g, "myfile.frag". If given
- // the suffix directly, we skip looking the '.'
- if (parseSuffix) {
- ext = name.rfind('.');
- if (ext == std::string::npos) {
- usage();
- return EShLangVertex;
- }
- ++ext;
- }
-
- std::string suffix = name.substr(ext, std::string::npos);
if (shaderStageName)
suffix = shaderStageName;
+ else {
+ // Search for a suffix on a filename: e.g, "myfile.frag". If given
+ // the suffix directly, we skip looking for the '.'
+ if (parseSuffix) {
+ ext = name.rfind('.');
+ if (ext == std::string::npos) {
+ usage();
+ return EShLangVertex;
+ }
+ ++ext;
+ }
+ suffix = name.substr(ext, std::string::npos);
+ }
if (suffix == "vert")
return EShLangVertex;
@@ -957,8 +958,8 @@
" -H print human readable form of SPIR-V; turns on -V\n"
" -E print pre-processed GLSL; cannot be used with -l;\n"
" errors will appear on stderr.\n"
- " -S <stage> uses explicit stage specified, rather then the file extension.\n"
- " valid choices are vert, tesc, tese, geom, frag, or comp\n"
+ " -S <stage> uses specified stage rather than parsing the file extension\n"
+ " valid choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
" -c configuration dump;\n"
" creates the default configuration file (redirect to a .conf file)\n"
" -C cascading errors; risks crashes from accumulation of error recoveries\n"