diff options
author | timshen <timshen@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-15 04:28:51 +0000 |
---|---|---|
committer | timshen <timshen@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-07-15 04:28:51 +0000 |
commit | 355d43f5667232b884c6c318252d9b3a99de6f07 (patch) | |
tree | f933dac8117bc14977bef67f64a0a49984fd56c0 /libstdc++-v3 | |
parent | 658dbbd8b1c6ad6d93fd48f1d8ee5ce61187b742 (diff) | |
download | gcc-355d43f5667232b884c6c318252d9b3a99de6f07.tar.gz |
PR libstdc++/61720
* include/bits/regex_executor.tcc (_Executor<>::_M_main_dispatch):
Clear match queue for next use.
* testsuite/28_regex/algorithms/regex_search/61720.cc: New file.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212539 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/regex_executor.tcc | 1 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc | 48 |
3 files changed, 56 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 34dc59fd598..955efbf16fc 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2014-07-15 Tim Shen <timshen@google.com> + + PR libstdc++/61720 + * include/bits/regex_executor.tcc (_Executor<>::_M_main_dispatch): + Clear match queue for next use. + * testsuite/28_regex/algorithms/regex_search/61720.cc: New file. + 2014-07-14 Ulrich Drepper <drepper@gmail.com> * include/ext/random.tcc: Unfortunately more fixes for diff --git a/libstdc++-v3/include/bits/regex_executor.tcc b/libstdc++-v3/include/bits/regex_executor.tcc index 38b8ff27013..3c68668dbcf 100644 --- a/libstdc++-v3/include/bits/regex_executor.tcc +++ b/libstdc++-v3/include/bits/regex_executor.tcc @@ -137,6 +137,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } if (__match_mode == _Match_mode::_Exact) __ret = _M_has_sol; + _M_states._M_match_queue.clear(); return __ret; } diff --git a/libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc b/libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc new file mode 100644 index 00000000000..15f4fd6c0d1 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc @@ -0,0 +1,48 @@ +// { dg-options "-std=gnu++11" } + +// +// Copyright (C) 2014 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library is free +// software; you can redistribute it and/or modify it under the +// terms of the GNU General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) +// any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +#include <regex> +#include <testsuite_hooks.h> +#include <testsuite_regex.h> + +using namespace __gnu_test; +using namespace std; + +// libstdc++/61720 +void +test01() +{ + bool test __attribute__((unused)) = true; + + string s = R"("test\")"; + VERIFY(!regex_search_debug(s, regex(R"("([^"]|\\")*[^\\]")"))); + VERIFY(!regex_match_debug(s, regex(R"("([^"]|\\")*[^\\]")"))); + VERIFY(!regex_search_debug(s, regex(R"("([^"]|\\")*[^\\]")", + regex_constants::extended))); + VERIFY(!regex_match_debug(s, regex(R"("([^"]|\\")*[^\\]")", + regex_constants::extended))); +} + +int +main() +{ + test01(); + return 0; +} |