diff options
author | Tim Shen <timshen91@gmail.com> | 2014-01-21 19:54:03 +0000 |
---|---|---|
committer | Tim Shen <timshen@gcc.gnu.org> | 2014-01-21 19:54:03 +0000 |
commit | 8f7082f5ea8da41cf909c6f06b036f01c4485b5a (patch) | |
tree | e10e5ddc41df84347c547d00a76777c63ab6e931 | |
parent | 6ff956e3c2b0369d8312e9fb3f9fab0b67720b07 (diff) | |
download | gcc-8f7082f5ea8da41cf909c6f06b036f01c4485b5a.zip gcc-8f7082f5ea8da41cf909c6f06b036f01c4485b5a.tar.gz gcc-8f7082f5ea8da41cf909c6f06b036f01c4485b5a.tar.bz2 |
regex.tcc: Remove incorrect `nosubs` handling.
2014-01-21 Tim Shen <timshen91@gmail.com>
* include/bits/regex.tcc: Remove incorrect `nosubs` handling.
* include/bits/regex_scanner.tcc: Handle `nosubs` correctly.
* testsuite/28_regex/constants/syntax_option_type.cc: Add a test case.
From-SVN: r206906
-rw-r--r-- | libstdc++-v3/ChangeLog | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/regex.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/regex_scanner.tcc | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc | 13 |
4 files changed, 20 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 879efe8..bc1803e 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2014-01-21 Tim Shen <timshen91@gmail.com> + + * include/bits/regex.tcc: Remove incorrect `nosubs` handling. + * include/bits/regex_scanner.tcc: Handle `nosubs` correctly. + * testsuite/28_regex/constants/syntax_option_type.cc: Add a test case. + 2014-01-21 Jonathan Wakely <jwakely@redhat.com> PR libstdc++/56267 diff --git a/libstdc++-v3/include/bits/regex.tcc b/libstdc++-v3/include/bits/regex.tcc index 1ceac60..73f55df 100644 --- a/libstdc++-v3/include/bits/regex.tcc +++ b/libstdc++-v3/include/bits/regex.tcc @@ -126,8 +126,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __suf.second = __e; __suf.matched = (__suf.first != __suf.second); } - if (__re.flags() & regex_constants::nosubs) - __res.resize(3); } return __ret; } diff --git a/libstdc++-v3/include/bits/regex_scanner.tcc b/libstdc++-v3/include/bits/regex_scanner.tcc index d954d07..5332d2e 100644 --- a/libstdc++-v3/include/bits/regex_scanner.tcc +++ b/libstdc++-v3/include/bits/regex_scanner.tcc @@ -139,6 +139,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION else __throw_regex_error(regex_constants::error_paren); } + else if (_M_flags & regex_constants::nosubs) + _M_token = _S_token_subexpr_no_group_begin; else _M_token = _S_token_subexpr_begin; } diff --git a/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc b/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc index 22559f5..2423775 100644 --- a/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc +++ b/libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc @@ -1,5 +1,4 @@ // { dg-options "-std=c++0x" } -// { dg-do compile } // // 2009-06-17 Stephen M. Webb <stephen.webb@xandros.com> // @@ -23,6 +22,7 @@ // 28.5.1 #include <regex> +#include <testsuite_hooks.h> void test01() @@ -82,10 +82,21 @@ test04_constexpr() constexpr auto a3 __attribute__((unused)) = ~grep; } +void +test05() +{ + using namespace std; + using namespace regex_constants; + regex re("((a)(s))", nosubs | ECMAScript); + VERIFY(re.mark_count() == 0); +} + int main() { test01(); test02(); test03(); + test04_constexpr(); + test05(); return 0; } |