diff options
author | Tim Rowley <[email protected]> | 2017-06-26 08:57:38 -0500 |
---|---|---|
committer | Tim Rowley <[email protected]> | 2017-06-26 11:29:27 -0500 |
commit | 0e1e5a2b14cb602030928431bec45af394be43e3 (patch) | |
tree | bcc52673b24471c6db4f389124547ddef799da72 /src/gallium/drivers/swr/rasterizer | |
parent | 3c7c82cef060c6e480c674609c7e27d7184ab526 (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/rasterizer')
-rw-r--r-- | src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp | 12 |
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 +%> |