From: Jonathan Wakely Date: Wed, 7 Jun 2017 17:00:56 +0000 (+0100) Subject: PR libstdc++/81002 fix std::basic_regex range constructor X-Git-Tag: releases/gcc-5.5.0~221 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a374b7fb23e84269c6a988e71177d5bb0524422e;p=thirdparty%2Fgcc.git PR libstdc++/81002 fix std::basic_regex range constructor PR libstdc++/81002 * include/bits/regex_compiler.h (__compile_nfa): Add template argument list to specify traits type. * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New. From-SVN: r248993 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 729209f81194..f310288f7e55 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2017-06-07 Jonathan Wakely + + PR libstdc++/81002 + * include/bits/regex_compiler.h (__compile_nfa): Add template argument + list to specify traits type. + * testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New. + 2017-05-18 Jonathan Wakely * testsuite/22_locale/codecvt/codecvt_utf16/79980.cc: Replace diff --git a/libstdc++-v3/include/bits/regex_compiler.h b/libstdc++-v3/include/bits/regex_compiler.h index 0cb0c04b1ebe..4d90e623bbf0 100644 --- a/libstdc++-v3/include/bits/regex_compiler.h +++ b/libstdc++-v3/include/bits/regex_compiler.h @@ -200,9 +200,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION const typename _TraitsT::locale_type& __loc, regex_constants::syntax_option_type __flags) { - basic_string __str(__first, __last); - return __compile_nfa(__str.data(), __str.data() + __str.size(), __loc, - __flags); + using char_type = typename _TraitsT::char_type; + const basic_string __str(__first, __last); + return __compile_nfa(__str.data(), + __str.data() + __str.size(), __loc, __flags); } // [28.13.14] diff --git a/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc new file mode 100644 index 000000000000..7776c5fd5572 --- /dev/null +++ b/libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc @@ -0,0 +1,30 @@ +// Copyright (C) 2017 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 +// . + +// { dg-do compile { target c++11 } } + +#include +#include + +void +test01() +{ + char s[] = ""; + __gnu_test::test_container c(s); + std::regex r1(c.begin(), c.end()); + std::regex r2(c.begin(), c.end(), std::regex_constants::grep); +}