commit 5e33e4fc2c02f92dec8918ade9d1e191d1d697b3 Author: Jean-Marc Lasgouttes <lasgout...@lyx.org> Date: Sat Jul 13 00:24:21 2019 +0200
Catch improbable exception We know that the exception is correct, but coverity does not. It would be much better to check that at compile time... --- src/support/os.cpp | 9 +++++++-- 1 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/support/os.cpp b/src/support/os.cpp index c381203..ab9d415 100644 --- a/src/support/os.cpp +++ b/src/support/os.cpp @@ -49,7 +49,6 @@ int timeout_min() static string const python23_call(string const & binary, bool verbose = false) { const string version_info = " -c 'from __future__ import print_function;import sys; print(sys.version_info[:2], end=\"\")'"; - static regex const python_reg("\\((\\d*), (\\d*)\\)"); // Default to "python" if no binary is given. if (binary.empty()) return "python -tt"; @@ -60,8 +59,14 @@ static string const python23_call(string const & binary, bool verbose = false) cmd_ret const out = runCommand(binary + version_info); smatch sm; - if (out.first < 0 || !regex_match(out.second, sm, python_reg)) + try { + static regex const python_reg("\\((\\d*), (\\d*)\\)"); + if (out.first < 0 || !regex_match(out.second, sm, python_reg)) + return string(); + } catch(regex_error const & /*e*/) { + LYXERR0("Regex error! This should not happen."); return string(); + } int major = convert<int>(sm.str(1)); int minor = convert<int>(sm.str(2));