diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-12-03 14:20:56 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-12-03 14:20:56 +0000 |
commit | 47c40967de46e2e7ef8c6c8ea68dbad323226102 (patch) | |
tree | 9d3617a39d3b1d4730536b70b1be7b55faa58744 | |
parent | c485f9984da2f9c42e076f8ba23f2d5d4b72f0db (diff) | |
download | gcc-47c40967de46e2e7ef8c6c8ea68dbad323226102.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@154948 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libstdc++-v3/ChangeLog | 12 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/basic_string.h | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/rc_string_base.h | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/ext/sso_string_base.h | 3 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc | 35 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc | 35 |
6 files changed, 88 insertions, 3 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 7585153ed1d..3bdd2c830a7 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,17 @@ 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. * testsuite/20_util/bind/all_bound.cc: Likewise. * testsuite/20_util/bind/nested.cc: Likewise. diff --git a/libstdc++-v3/include/bits/basic_string.h b/libstdc++-v3/include/bits/basic_string.h index 269a75ed468..a574bf62f87 100644 --- a/libstdc++-v3/include/bits/basic_string.h +++ b/libstdc++-v3/include/bits/basic_string.h @@ -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* diff --git a/libstdc++-v3/include/ext/rc_string_base.h b/libstdc++-v3/include/ext/rc_string_base.h index 6d8c430d575..c9fdb25317d 100644 --- a/libstdc++-v3/include/ext/rc_string_base.h +++ b/libstdc++-v3/include/ext/rc_string_base.h @@ -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* diff --git a/libstdc++-v3/include/ext/sso_string_base.h b/libstdc++-v3/include/ext/sso_string_base.h index d88297fc36e..264e862e96a 100644 --- a/libstdc++-v3/include/ext/sso_string_base.h +++ b/libstdc++-v3/include/ext/sso_string_base.h @@ -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 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 new file mode 100644 index 00000000000..a83b74ac735 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc @@ -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; +} 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 new file mode 100644 index 00000000000..8782e8cafe9 --- /dev/null +++ b/libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc @@ -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; +} |