From b1d1c1fa77c7be924e47e41d26b9e37e3d055a8a Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Sat, 13 Jul 2019 00:24:21 +0200 Subject: [PATCH] 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 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/support/os.cpp b/src/support/os.cpp index c381203313..ab9d4159a6 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(sm.str(1)); int minor = convert(sm.str(2)); -- 2.39.5