strstream.cc (strstreambuf::overflow): Make sure operands of min and max have the same type.

* src/strstream.cc (strstreambuf::overflow): Make sure operands of
min and max have the same type.
* include/bits/basic_string.tcc (append, rfind, compare): Likewise.

From-SVN: r63802
This commit is contained in:
Alexandre Oliva 2003-03-04 21:21:44 +00:00 committed by Alexandre Oliva
parent ec4a0419ad
commit 1a8f10da2c
3 changed files with 16 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2003-03-04 Alexandre Oliva <aoliva@redhat.com>
* src/strstream.cc (strstreambuf::overflow): Make sure operands of
min and max have the same type.
* include/bits/basic_string.tcc (append, rfind, compare): Likewise.
2003-03-04 Benjamin Kosnik <bkoz@redhat.com>
* include/Makefile.am (allstamps): Remove stamp-std-precompile.

View File

@ -578,7 +578,8 @@ namespace std
// Iff appending itself, string needs to pre-reserve the
// correct size so that _M_mutate does not clobber the
// iterators formed here.
size_type __len = std::min(__str.size() - __pos, __n) + this->size();
size_type __len = std::min(size_type (__str.size() - __pos),
__n) + this->size();
if (__len > this->capacity())
this->reserve(__len);
return _M_replace_safe(_M_iend(), _M_iend(), __str._M_check(__pos),
@ -709,7 +710,7 @@ namespace std
size_type __size = this->size();
if (__n <= __size)
{
__pos = std::min(__size - __n, __pos);
__pos = std::min(size_type (__size - __n), __pos);
const _CharT* __data = _M_data();
do
{
@ -848,7 +849,7 @@ namespace std
if (__pos > __size)
__throw_out_of_range("basic_string::compare");
size_type __rsize= std::min(__size - __pos, __n);
size_type __rsize= std::min(size_type (__size - __pos), __n);
size_type __len = std::min(__rsize, __osize);
int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
if (!__r)
@ -867,8 +868,8 @@ namespace std
if (__pos1 > __size || __pos2 > __osize)
__throw_out_of_range("basic_string::compare");
size_type __rsize = std::min(__size - __pos1, __n1);
size_type __rosize = std::min(__osize - __pos2, __n2);
size_type __rsize = std::min(size_type (__size - __pos1), __n1);
size_type __rosize = std::min(size_type (__osize - __pos2), __n2);
size_type __len = std::min(__rsize, __rosize);
int __r = traits_type::compare(_M_data() + __pos1,
__str.data() + __pos2, __len);
@ -903,7 +904,7 @@ namespace std
__throw_out_of_range("basic_string::compare");
size_type __osize = traits_type::length(__s);
size_type __rsize = std::min(__size - __pos, __n1);
size_type __rsize = std::min(size_type (__size - __pos), __n1);
size_type __len = std::min(__rsize, __osize);
int __r = traits_type::compare(_M_data() + __pos, __s, __len);
if (!__r)
@ -922,7 +923,7 @@ namespace std
__throw_out_of_range("basic_string::compare");
size_type __osize = std::min(traits_type::length(__s), __n2);
size_type __rsize = std::min(__size - __pos, __n1);
size_type __rsize = std::min(size_type (__size - __pos), __n1);
size_type __len = std::min(__rsize, __osize);
int __r = traits_type::compare(_M_data() + __pos, __s, __len);
if (!__r)

View File

@ -1,6 +1,6 @@
// strstream definitions -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation
// Copyright (C) 2001, 2002, 2003 Free Software Foundation
//
// 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
@ -148,7 +148,7 @@ namespace std
if (pptr() == epptr() && _M_dynamic && !_M_frozen && !_M_constant)
{
ptrdiff_t old_size = epptr() - pbase();
ptrdiff_t new_size = std::max(2 * old_size, ptrdiff_t(1));
ptrdiff_t new_size = std::max(ptrdiff_t (2 * old_size), ptrdiff_t (1));
char* buf = _M_alloc(new_size);
if (buf)