Module: Mesa Branch: master Commit: e21fc2c625279b29a3c05d3341b8b748655d5cec URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e21fc2c625279b29a3c05d3341b8b748655d5cec
Author: Tim Rowley <[email protected]> Date: Wed Jul 26 15:17:49 2017 -0500 swr/rast: non-regex knob fallback code for gcc < 4.9 gcc prior to 4.9 didn't implement <regex>, causing a startup crash in the swr knob parameter reading code. CC: <[email protected]> Reviewed-by: Bruce Cherniak <[email protected]> --- .../swr/rasterizer/codegen/templates/gen_knobs.cpp | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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 e109fd2659..06b93bd72b 100644 --- a/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp +++ b/src/gallium/drivers/swr/rasterizer/codegen/templates/gen_knobs.cpp @@ -140,6 +140,26 @@ extern GlobalKnobs g_GlobalKnobs; //======================================================== void KnobBase::autoExpandEnvironmentVariables(std::string &text) { +#if (__GNUC__) && (GCC_VERSION < 409000) + // <regex> isn't implemented prior to gcc-4.9.0 + // unix style variable replacement + size_t start; + while ((start = text.find("${'${'}")) != std::string::npos) { + size_t end = text.find("}"); + if (end == std::string::npos) + break; + const std::string var = GetEnv(text.substr(start + 2, end - start - 2)); + text.replace(start, end - start + 1, var); + } + // win32 style variable replacement + while ((start = text.find("%")) != std::string::npos) { + size_t end = text.find("%", start + 1); + if (end == std::string::npos) + break; + const std::string var = GetEnv(text.substr(start + 1, end - start - 1)); + text.replace(start, end - start + 1, var); + } +#else { // unix style variable replacement static std::regex env("\\$\\{([^}]+)\\}"); @@ -164,6 +184,7 @@ void KnobBase::autoExpandEnvironmentVariables(std::string &text) text.replace(match.prefix().length(), match[0].length(), var); } } +#endif } _______________________________________________ mesa-commit mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/mesa-commit
