commit 5e33e4fc2c02f92dec8918ade9d1e191d1d697b3
Author: Jean-Marc Lasgouttes <[email protected]>
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));