diff options
-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 +%> |