// { dg-do run { target c++11 } } #include #include #include #include // PR libstdc++/106607 - Regex integer overflow on large backreference value int main() { std::regex r("(.)\\1"); // OK try { long long n = (unsigned)-1 + 2LL; // 4294967297 for 32-bit int VERIFY( (int)n == 1 ); // 4294967297 % 2^32 == 1 std::regex r("(.)\\" + std::to_string(n)); // Invalid back reference. VERIFY(false); } catch (const std::regex_error& e) { VERIFY( e.code() == std::regex_constants::error_backref ); } }