From: Paolo Carlini Date: Thu, 10 Dec 2009 17:17:41 +0000 (+0000) Subject: revert: re PR libstdc++/42261 (infinite recursion from string(string::size_type(6... X-Git-Tag: releases/gcc-4.5.0~1709 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=574f366488bbe1bf3075735278242a92be85f40b;p=thirdparty%2Fgcc.git revert: re PR libstdc++/42261 (infinite recursion from string(string::size_type(6), string::size_type('f'))) 2009-12-10 Paolo Carlini Revert: 2009-12-03 Paolo Carlini 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: r155132 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 22970112aa40..756632022528 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,7 +1,22 @@ +2009-12-10 Paolo Carlini + + Revert: + 2009-12-03 Paolo Carlini + + 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-10 Paolo Carlini * testsuite/util/testsuite_containers.h (populate<>::populate(_Tp&)): - Avoid used uninitialized warning. + Avoid used uninitialized warning. * include/ext/pb_ds/detail/cc_hash_table_map_/ constructor_destructor_fn_imps.hpp: Fix typo causing sequence point warning. diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index a574bf62f878..269a75ed4681 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -1588,8 +1588,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) static _CharT* _S_construct_aux(_Integer __beg, _Integer __end, const _Alloc& __a, __true_type) - { return _S_construct(static_cast(__beg), - static_cast(__end), __a); } + { return _S_construct(static_cast(__beg), __end, __a); } template static _CharT* diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h index c9fdb25317d3..6d8c430d5750 100644 --- a/libstdc++-v3/include/ext/rc_string_base.h +++ b/libstdc++-v3/include/ext/rc_string_base.h @@ -231,8 +231,7 @@ _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(__beg), - static_cast(__end), __a); } + { return _S_construct(static_cast(__beg), __end, __a); } template static _CharT* diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h index 264e862e96ae..d88297fc36e5 100644 --- a/libstdc++-v3/include/ext/sso_string_base.h +++ b/libstdc++-v3/include/ext/sso_string_base.h @@ -106,8 +106,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) template void _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type) - { _M_construct(static_cast(__beg), - static_cast(__end)); } + { _M_construct(static_cast(__beg), __end); } template void diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc deleted file mode 100644 index a83b74ac7359..000000000000 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc +++ /dev/null @@ -1,35 +0,0 @@ -// 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 -// . - -#include -#include - -// 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; -} diff --git a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc deleted file mode 100644 index 8782e8cafe90..000000000000 --- a/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc +++ /dev/null @@ -1,35 +0,0 @@ -// 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 -// . - -#include -#include - -// 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; -}