Skip site navigation (1)Skip section navigation (2)
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>