]> git.lyx.org Git - features.git/commitdiff
Catch improbable exception
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 12 Jul 2019 22:24:21 +0000 (00:24 +0200)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 18 Jun 2020 13:48:35 +0000 (15:48 +0200)
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

index c381203313d949bbb16ccf1dd2063f02c5aab869..ab9d4159a6cc8180864e760f330af3fc95bbb5d7 100644 (file)
@@ -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));