aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/swr
diff options
context:
space:
mode:
authorTim Rowley <[email protected]>2017-06-26 08:57:38 -0500
committerTim Rowley <[email protected]>2017-06-26 11:29:27 -0500
commit0e1e5a2b14cb602030928431bec45af394be43e3 (patch)
treebcc52673b24471c6db4f389124547ddef799da72 /src/gallium/drivers/swr
parent3c7c82cef060c6e480c674609c7e27d7184ab526 (diff)
swr/rast: adjust std::string usage to fix build
Some combinations of c++ compilers and standard libraries had problems with the string::replace code we were using previously. This should fix the travis-ci system. Tested-by: Eric Engestrom <[email protected]> Reviewed-by: Bruce Cherniak <[email protected]>
Diffstat (limited to 'src/gallium/drivers/swr')
-rw-r--r--src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp
index 0527bf3b310..e109fd26597 100644
--- a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp
+++ b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp
@@ -141,21 +141,27 @@ extern GlobalKnobs g_GlobalKnobs;
void KnobBase::autoExpandEnvironmentVariables(std::string &text)
{
{
+ // unix style variable replacement
static std::regex env("\\$\\{([^}]+)\\}");
std::smatch match;
while (std::regex_search(text, match, env))
{
const std::string var = GetEnv(match[1].str());
- text.replace(match[0].first, match[0].second, var);
+ // certain combinations of gcc/libstd++ have problems with this
+ // text.replace(match[0].first, match[0].second, var);
+ text.replace(match.prefix().length(), match[0].length(), var);
}
}
{
+ // win32 style variable replacement
static std::regex env("\\%([^}]+)\\%");
std::smatch match;
while (std::regex_search(text, match, env))
{
const std::string var = GetEnv(match[1].str());
- text.replace(match[0].first, match[0].second, var);
+ // certain combinations of gcc/libstd++ have problems with this
+ // text.replace(match[0].first, match[0].second, var);
+ text.replace(match.prefix().length(), match[0].length(), var);
}
}
}
@@ -232,4 +238,4 @@ std::string GlobalKnobs::ToString(const char* optPerLinePrefix)
return ' '*(max_len - name_len)
-%> \ No newline at end of file
+%>