Date: Tue, 04 Feb 2020 18:53:12 +0000 From: bugzilla-noreply@freebsd.org To: bugs@FreeBSD.org Subject: [Bug 243881] libc++: regex uses truncated pattern if normal character is escaped Message-ID: <bug-243881-227@https.bugs.freebsd.org/bugzilla/>
index | next in thread | raw e-mail
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=243881 Bug ID: 243881 Summary: libc++: regex uses truncated pattern if normal character is escaped Product: Base System Version: 12.1-RELEASE Hardware: amd64 OS: Any Status: New Severity: Affects Only Me Priority: --- Component: bin Assignee: bugs@FreeBSD.org Reporter: mail@maxlor.com If a pattern in which a normal character is escaped (e.g.: "a\bc"), the libc++ that ships with FreeBSD 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: 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 (clang 8.0.1): abc: match a\bc: match a\bx: match a\xc: match x\bc: no match On FreeBSD, gcc9 works correctly, so does clang-8 on Ubuntu, which makes me think this is specific to the FreeBSD system compiler. -- You are receiving this mail because: You are the assignee for the bug.help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-243881-227>
