mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
Fix issue with regular expressions
At least with gcc 6.4, if the first parameter passed to
regex_match() is afterward changed, the second one gets
corrupted. This is avoided by using a temporary string.
(cherry picked from commit c16ccdb5fd
)
This commit is contained in:
parent
f2f12cc7c7
commit
2e253eab0f
@ -236,6 +236,8 @@ docstring constructName(docstring const & name, string const scheme)
|
||||
static regex const reg2("(.*)(\\{%suffix%\\[\\[)([^\\]]+)(\\]\\]\\})(.*)");
|
||||
static regex const reg3("(.*)(\\{%prefix%\\[\\[)([^\\]]+)(\\]\\]\\})(.*)");
|
||||
smatch sub;
|
||||
// Changing the first parameter of regex_match() may corrupt the
|
||||
// second one. In this case we use the temporary string tmp.
|
||||
if (regex_match(scheme, sub, reg1)) {
|
||||
res = sub.str(1);
|
||||
if (!prename.empty())
|
||||
@ -243,16 +245,16 @@ docstring constructName(docstring const & name, string const scheme)
|
||||
res += sub.str(5);
|
||||
}
|
||||
if (regex_match(res, sub, reg2)) {
|
||||
res = sub.str(1);
|
||||
string tmp = sub.str(1);
|
||||
if (!suffix.empty())
|
||||
res += sub.str(3);
|
||||
res += sub.str(5);
|
||||
tmp += sub.str(3);
|
||||
res = tmp + sub.str(5);
|
||||
}
|
||||
if (regex_match(res, sub, reg3)) {
|
||||
res = sub.str(1);
|
||||
string tmp = sub.str(1);
|
||||
if (!prefix.empty())
|
||||
res += sub.str(3);
|
||||
res += sub.str(5);
|
||||
tmp += sub.str(3);
|
||||
res = tmp + sub.str(5);
|
||||
}
|
||||
docstring result = from_ascii(res);
|
||||
result = subst(result, from_ascii("%prename%"), prename);
|
||||
|
Loading…
Reference in New Issue
Block a user