[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