re PR libstdc++/42261 (infinite recursion from string(string::size_type(6), string::size_type('f')))
2009-12-03 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/42261 * include/bits/basic_string.h (_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)): Cast the second argument to value_type. * include/ext/sso_string_base.h (_M_construct_aux(_Integer, _Integer, std::__true_type)): Likewise. * include/ext/rc_string_base.h (_S_construct_aux(_Integer, _Integer, const _Alloc&, std::__true_type)): Likewise. * testsuite/21_strings/basic_string/cons/char/42261.cc: New. * testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise. From-SVN: r154948
This commit is contained in:
parent
ddf6c18784
commit
bcaf576b83
@ -1,3 +1,15 @@
|
||||
2009-12-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR libstdc++/42261
|
||||
* include/bits/basic_string.h (_S_construct_aux(_Integer, _Integer,
|
||||
const _Alloc&, __true_type)): Cast the second argument to value_type.
|
||||
* include/ext/sso_string_base.h (_M_construct_aux(_Integer, _Integer,
|
||||
std::__true_type)): Likewise.
|
||||
* include/ext/rc_string_base.h (_S_construct_aux(_Integer, _Integer,
|
||||
const _Alloc&, std::__true_type)): Likewise.
|
||||
* testsuite/21_strings/basic_string/cons/char/42261.cc: New.
|
||||
* testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise.
|
||||
|
||||
2009-12-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
* testsuite/20_util/bind/ref.cc: Add.
|
||||
|
@ -1588,7 +1588,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
static _CharT*
|
||||
_S_construct_aux(_Integer __beg, _Integer __end,
|
||||
const _Alloc& __a, __true_type)
|
||||
{ return _S_construct(static_cast<size_type>(__beg), __end, __a); }
|
||||
{ return _S_construct(static_cast<size_type>(__beg),
|
||||
static_cast<value_type>(__end), __a); }
|
||||
|
||||
template<class _InIterator>
|
||||
static _CharT*
|
||||
|
@ -231,7 +231,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
static _CharT*
|
||||
_S_construct_aux(_Integer __beg, _Integer __end,
|
||||
const _Alloc& __a, std::__true_type)
|
||||
{ return _S_construct(static_cast<size_type>(__beg), __end, __a); }
|
||||
{ return _S_construct(static_cast<size_type>(__beg),
|
||||
static_cast<value_type>(__end), __a); }
|
||||
|
||||
template<typename _InIterator>
|
||||
static _CharT*
|
||||
|
@ -106,7 +106,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
template<typename _Integer>
|
||||
void
|
||||
_M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
|
||||
{ _M_construct(static_cast<size_type>(__beg), __end); }
|
||||
{ _M_construct(static_cast<size_type>(__beg),
|
||||
static_cast<value_type>(__end)); }
|
||||
|
||||
template<typename _InIterator>
|
||||
void
|
||||
|
@ -0,0 +1,35 @@
|
||||
// Copyright (C) 2009 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 <string>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
// libstdc++/42261
|
||||
void test01()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
using namespace std;
|
||||
|
||||
const string s(string::size_type(6), string::size_type('f'));
|
||||
VERIFY( s == "ffffff" );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
// Copyright (C) 2009 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 <string>
|
||||
#include <testsuite_hooks.h>
|
||||
|
||||
// libstdc++/42261
|
||||
void test01()
|
||||
{
|
||||
bool test __attribute__((unused)) = true;
|
||||
using namespace std;
|
||||
|
||||
const wstring s(wstring::size_type(6), wstring::size_type(L'f'));
|
||||
VERIFY( s == L"ffffff" );
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
test01();
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user