std_memory.h (__get_temporary_buffer): Don't use INT_MAX...

2004-10-09  Paolo Carlini  <pcarlini@suse.de>

	* include/std/std_memory.h (__get_temporary_buffer): Don't use
	INT_MAX, prefer numeric_limits<ptrdiff_t>::max(), ok on 64-bit
	platforms too.
	* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust dg-error
	line numbers.

From-SVN: r88814
This commit is contained in:
Paolo Carlini 2004-10-09 08:23:02 +00:00 committed by Paolo Carlini
parent c3e7f18406
commit dafa8871d1
3 changed files with 15 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2004-10-09 Paolo Carlini <pcarlini@suse.de>
* include/std/std_memory.h (__get_temporary_buffer): Don't use
INT_MAX, prefer numeric_limits<ptrdiff_t>::max(), ok on 64-bit
platforms too.
* testsuite/20_util/memory/auto_ptr/assign_neg.cc: Adjust dg-error
line numbers.
2004-10-08 Benjamin Kosnik <bkoz@redhat.com>
* acconfig.h: Add _GLIBCXX_USE___CXA_ATEXIT.

View File

@ -58,6 +58,7 @@
#include <bits/stl_uninitialized.h>
#include <bits/stl_raw_storage_iter.h>
#include <debug/debug.h>
#include <limits>
namespace std
{
@ -73,8 +74,9 @@ namespace std
pair<_Tp*, ptrdiff_t>
__get_temporary_buffer(ptrdiff_t __len, _Tp*)
{
if (__len > ptrdiff_t(INT_MAX / sizeof(_Tp)))
__len = INT_MAX / sizeof(_Tp);
const ptrdiff_t __max = numeric_limits<ptrdiff_t>::max() / sizeof(_Tp);
if (__len > __max)
__len = __max;
while (__len > 0)
{
@ -105,7 +107,7 @@ namespace std
* Provides the nothrow exception guarantee.
*/
template<typename _Tp>
inline pair<_Tp*,ptrdiff_t>
inline pair<_Tp*, ptrdiff_t>
get_temporary_buffer(ptrdiff_t __len)
{ return std::__get_temporary_buffer(__len, static_cast<_Tp*>(0)); }

View File

@ -46,5 +46,5 @@ main()
test01();
return 0;
}
// { dg-error "candidates" "" { target *-*-* } 222 }
// { dg-error "std::auto_ptr" "" { target *-*-* } 352 }
// { dg-error "candidates" "" { target *-*-* } 224 }
// { dg-error "std::auto_ptr" "" { target *-*-* } 354 }