On Sun, Jan 19, 2014 at 5:01 AM, Paolo Carlini <paolo.carl...@oracle.com> wrote: > Ok. Please remove 2013 as copyright year for the tescase. I also think you > can avoid the auxiliary includes.
Oops, fixed, including fixing incorrect file name :) Tested and committed. -- Regards, Tim Shen
commit 5e36fe9d0d2dbbb2141016d1062bda4fb61fe8ec Author: tim <timshe...@gmail.com> Date: Sat Jan 18 23:35:09 2014 -0500 2014-01-19 Tim Shen <timshe...@gmail.com> * include/bits/regex_compiler.h (_Comipler<>::_M_quantifier()): Fix parse error of multiple consecutive quantifiers like "a**". * include/bits/regex_compiler.tcc (_Comipler<>::_M_quantifier()): Likewise. * testsuite/28_regex/basic_regex/multiple_quantifiers.cc: New. diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h index 216f8fb..fe2e5f1 100644 --- a/libstdc++-v3/include/bits/regex_compiler.h +++ b/libstdc++-v3/include/bits/regex_compiler.h @@ -83,7 +83,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool _M_assertion(); - void + bool _M_quantifier(); bool diff --git a/libstdc++-v3/include/bits/regex_compiler.tcc b/libstdc++-v3/include/bits/regex_compiler.tcc index 621e43f..128dac1 100644 --- a/libstdc++-v3/include/bits/regex_compiler.tcc +++ b/libstdc++-v3/include/bits/regex_compiler.tcc @@ -135,7 +135,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION return true; if (this->_M_atom()) { - this->_M_quantifier(); + while (this->_M_quantifier()); return true; } return false; @@ -173,7 +173,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } template<typename _TraitsT> - void + bool _Compiler<_TraitsT>:: _M_quantifier() { @@ -276,6 +276,9 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } _M_stack.push(__e); } + else + return false; + return true; } #define __INSERT_REGEX_MATCHER(__func, args...)\ diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc new file mode 100644 index 0000000..5670cbb --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc @@ -0,0 +1,33 @@ +// { 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/>. + +// 28.8 basic_regex +// Tests multiple consecutive quantifiers + +#include <regex> + +using namespace std; + +int +main() +{ + regex re1("a++"); + regex re2("(a+)+"); + return 0; +}