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.
This commit is contained in:
Jean-Marc Lasgouttes 2017-07-06 15:26:32 +02:00
parent 02c9d2e67c
commit 0ba385800e

View File

@ -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;
}