commit 0ba385800ef7a3293f02349bac70663c85416721
Author: Jean-Marc Lasgouttes <[email protected]>
Date:   Thu Jul 6 15:26:32 2017 +0200

    Rewrite stripName without regex
    
    Using a regular expression to find /src/ or \src\ in a string is overkill,
    and since regexes can throw exceptions, it makes coverity nervous.
    
    The new code is simpler anyway.
---
 src/support/debug.cpp |   17 +++++++----------
 1 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/support/debug.cpp b/src/support/debug.cpp
index 6e5e7ab..16e3c79 100644
--- a/src/support/debug.cpp
+++ b/src/support/debug.cpp
@@ -18,7 +18,6 @@
 #include "support/gettext.h"
 #include "support/lstrings.h"
 #include "support/ProgressInterface.h"
-#include "support/regex.h"
 
 #include <iostream>
 #include <iomanip>
@@ -202,15 +201,13 @@ char const * LyXErr::stripName(char const * n)
 {
        string const name = n;
        // find the last occurence of /src/ in name
-       static const regex re("[\\/]src[\\/]");
-       string::const_iterator const begin = name.begin();
-       string::const_iterator it = begin;
-       string::const_iterator const end = name.end();
-       smatch results;
-       while (regex_search(it, end, results, re)) {
-               it = results[0].second;
-       }
-       return n + std::distance(begin, it);
+       size_t pos = name.rfind("/src/");
+       if (pos == string::npos)
+               pos = name.rfind("\\src\\");
+       if (pos == string::npos)
+               return n;
+       else
+               return n + pos + 5;
 }
 
 

Reply via email to