https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119506

            Bug ID: 119506
           Summary: <regex>: \cA matches wrong byte
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: blubban at gmail dot com
  Target Milestone: ---

#include <regex>
#include <stdio.h>

int main()
{
    std::regex r{"\\cA"};
    std::cmatch m;
    bool result1 = std::regex_search("\x01", m, r);
    printf("search=%d\n", result1);
    bool result2 = std::regex_search("A", m, r);
    printf("search=%d\n", result2);
    try {
        std::regex r2{"\\c+"};
        puts("valid");
    } catch (const std::exception&) {
        puts("invalid");
    }
}


Expected: True, false, invalid.

Actual: False, true, valid. libstdc++-v3/include/bits/regex_scanner.tcc line
351 just takes the character after \c as a literal.

https://godbolt.org/z/h7M76dej5

Reply via email to