PR libstdc++/42261 (take 2)
2009-12-10 Paolo Carlini <paolo.carlini@oracle.com> PR libstdc++/42261 (take 2) * include/bits/basic_string.h (_S_construct_aux_2(size_type, _CharT, const _Alloc&)): Add. (_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)): Call it. * include/ext/sso_string_base.h (_M_construct_aux_2(size_type, _CharT): Add. (_M_construct_aux(_Integer, _Integer, std::__true_type)): Call it. * include/ext/rc_string_base.h (_S_construct_aux_2(size_type, _CharT, const _Alloc&)): Add. (_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)): Call it. * config/abi/pre/gnu.ver: Export basic_string::_S_construct_aux_2. * testsuite/21_strings/basic_string/cons/char/42261.cc: New. * testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise. From-SVN: r155137
This commit is contained in:
parent
d435810e76
commit
df4d18ad80
7 changed files with 108 additions and 4 deletions
|
@ -1,3 +1,21 @@
|
|||
2009-12-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR libstdc++/42261 (take 2)
|
||||
* include/bits/basic_string.h (_S_construct_aux_2(size_type, _CharT,
|
||||
const _Alloc&)): Add.
|
||||
(_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)):
|
||||
Call it.
|
||||
* include/ext/sso_string_base.h (_M_construct_aux_2(size_type,
|
||||
_CharT): Add.
|
||||
(_M_construct_aux(_Integer, _Integer, std::__true_type)): Call it.
|
||||
* include/ext/rc_string_base.h (_S_construct_aux_2(size_type, _CharT,
|
||||
const _Alloc&)): Add.
|
||||
(_S_construct_aux(_Integer, _Integer, const _Alloc&, __true_type)):
|
||||
Call it.
|
||||
* config/abi/pre/gnu.ver: Export basic_string::_S_construct_aux_2.
|
||||
* testsuite/21_strings/basic_string/cons/char/42261.cc: New.
|
||||
* testsuite/21_strings/basic_string/cons/wchar_t/42261.cc: Likewise.
|
||||
|
||||
2009-12-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
Revert:
|
||||
|
|
|
@ -1039,9 +1039,11 @@ GLIBCXX_3.4.14 {
|
|||
_ZNKSbIwSt11char_traitsIwESaIwEE7crbeginEv;
|
||||
_ZNKSbIwSt11char_traitsIwESaIwEE5crendEv;
|
||||
|
||||
# string|wstring ::_S_construct<> helpers
|
||||
# string|wstring ::_S_construct<> and ::_S_construct_aux_2 helpers
|
||||
_ZNSs12_S_constructI*;
|
||||
_ZNSbIwSt11char_traitsIwESaIwEE12_S_constructI*;
|
||||
_ZNSs18_S_construct_aux_2*;
|
||||
_ZNSbIwSt11char_traitsIwESaIwEE18_S_construct_aux_2*;
|
||||
|
||||
} GLIBCXX_3.4.13;
|
||||
|
||||
|
|
|
@ -1588,7 +1588,12 @@ _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_aux_2(static_cast<size_type>(__beg),
|
||||
__end, __a); }
|
||||
|
||||
static _CharT*
|
||||
_S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
|
||||
{ return _S_construct(__req, __c, __a); }
|
||||
|
||||
template<class _InIterator>
|
||||
static _CharT*
|
||||
|
|
|
@ -231,7 +231,12 @@ _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_aux_2(static_cast<size_type>(__beg),
|
||||
__end, __a); }
|
||||
|
||||
static _CharT*
|
||||
_S_construct_aux_2(size_type __req, _CharT __c, const _Alloc& __a)
|
||||
{ return _S_construct(__req, __c, __a); }
|
||||
|
||||
template<typename _InIterator>
|
||||
static _CharT*
|
||||
|
|
|
@ -106,7 +106,11 @@ _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_aux_2(static_cast<size_type>(__beg), __end); }
|
||||
|
||||
void
|
||||
_M_construct_aux_2(size_type __req, _CharT __c)
|
||||
{ _M_construct(__req, __c); }
|
||||
|
||||
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…
Add table
Reference in a new issue