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

            Bug ID: 119708
           Summary: <regex>: \00 should be rejected
           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() {
    try {
        std::regex r{"\\00"};
        puts("valid");
    } catch (const std::exception& e) {
        printf("not valid: %s\n", e.what());
    }
    try {
        std::regex r{"\\01"};
        puts("valid");
    } catch (const std::exception& e) {
        printf("not valid: %s\n", e.what());
    }
}


Expected: Reject them. 00 and 01 do not match DecimalIntegerLiteral in the JS
spec, and lookahead can't be a digit either.

Actual: Both are valid. (Can't find what they're actually parsed as, though.)

https://godbolt.org/z/heM1o1aGe

libc++ has the same bug. https://github.com/llvm/llvm-project/issues/135048

Reply via email to