From 0ba385800ef7a3293f02349bac70663c85416721 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Thu, 6 Jul 2017 15:26:32 +0200 Subject: [PATCH] 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 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/support/debug.cpp b/src/support/debug.cpp index 6e5e7abaaf..16e3c79694 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 #include @@ -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; }