[llvm-bugs] [Bug 44844] New: regex uses truncated pattern if normal character is escaped
via llvm-bugs
llvm-bugs at lists.llvm.org
Fri Feb 7 17:29:54 PST 2020
https://bugs.llvm.org/show_bug.cgi?id=44844
Bug ID: 44844
Summary: regex uses truncated pattern if normal character is
escaped
Product: libc++
Version: 8.0
Hardware: PC
OS: FreeBSD
Status: NEW
Severity: normal
Priority: P
Component: All Bugs
Assignee: unassignedclangbugs at nondot.org
Reporter: mail at maxlor.com
CC: llvm-bugs at lists.llvm.org, mclow.lists at gmail.com
If a pattern in which a normal character is escaped (e.g.: "a\bc"), the LLVM
libc++ only appears to use the part of the pattern up to that character.
Test program:
===== regextest.cpp BEGIN =====
#include <iostream>
#include <regex>
#include <vector>
using namespace std;
int main() {
vector<string> patterns = {
R"(abc)",
R"(a\bc)",
R"(a\bx)",
R"(a\xc)",
R"(x\bc)",
};
for (const string &pattern : patterns) {
cout << pattern << ": ";
try {
regex r(pattern, regex::extended);
bool match = regex_search("abc", r);
cout << (match ? "match" : "no match") << endl;
} catch (const std::regex_error &e) {
cout << "regex error: " << e.what() << endl;
}
}
return 0;
}
===== regextest.cpp END =====
expected output (confirmed on Linux with GCC):
abc: match
a\bc: match
a\bx: no match
a\xc: no match
x\bc: no match
Incorrect output on FreeBSD 12.1 with system c++ compiler/toolchain (LLVM
8.0.1):
abc: match
a\bc: match
a\bx: match
a\xc: match
x\bc: no match
The bug appears on OS X as well.
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20200208/f7194a2d/attachment-0001.html>
More information about the llvm-bugs
mailing list