This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[v3] Tweak fix for 8347, fully qualify distance() and min()
- From: Paolo Carlini <pcarlini at unitus dot it>
- To: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 02 Dec 2002 19:57:29 +0100
- Subject: [v3] Tweak fix for 8347, fully qualify distance() and min()
Hi,
tested x86-linux, approved by Gaby.
Ciao, Paolo.
//////////
2002-12-02 Paolo Carlini <pcarlini@unitus.it>
* include/bits/basic_string.tcc
(basic_string::append(const basic_string&, size_type,
size_type), basic_string::compare(size_type, size_type,
const basic_string&), basic_string::compare(size_type,
size_type, const basic_string&, size_type, size_type),
basic_string::compare(const _CharT*), basic_string::
compare(size_type, size_type, const _CharT*),
basic_string::compare(size_type, size_type, const _CharT*,
size_type), _S_string_copy(const basic_string&, _CharT*,
typename _Alloc::size_type)): Fully qualify min() with std::.
2002-12-02 Paolo Carlini <pcarlini@unitus.it>
* include/bits/basic_string.tcc
(basic_string::_S_construct(_InIter, _InIter, const _Alloc&,
forward_iterator_tag)): Delay the declaration of __dnew,
fully qualify distance() with std::.
(basic_string::_M_replace_safe): Fully qualify distance()
with std::.
--- basic_string.tcc.~1.28.~ 2002-11-01 18:30:35.000000000 +0100
+++ basic_string.tcc 2002-12-01 18:32:31.000000000 +0100
@@ -578,7 +578,7 @@
// 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 = min(__str.size() - __pos, __n) + this->size();
+ size_type __len = std::min(__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),
@@ -848,8 +848,8 @@
if (__pos > __size)
__throw_out_of_range("basic_string::compare");
- size_type __rsize= min(__size - __pos, __n);
- size_type __len = min(__rsize, __osize);
+ size_type __rsize= std::min(__size - __pos, __n);
+ size_type __len = std::min(__rsize, __osize);
int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);
if (!__r)
__r = __rsize - __osize;
@@ -867,9 +867,9 @@
if (__pos1 > __size || __pos2 > __osize)
__throw_out_of_range("basic_string::compare");
- size_type __rsize = min(__size - __pos1, __n1);
- size_type __rosize = min(__osize - __pos2, __n2);
- size_type __len = min(__rsize, __rosize);
+ size_type __rsize = std::min(__size - __pos1, __n1);
+ size_type __rosize = std::min(__osize - __pos2, __n2);
+ size_type __len = std::min(__rsize, __rosize);
int __r = traits_type::compare(_M_data() + __pos1,
__str.data() + __pos2, __len);
if (!__r)
@@ -885,7 +885,7 @@
{
size_type __size = this->size();
size_type __osize = traits_type::length(__s);
- size_type __len = min(__size, __osize);
+ size_type __len = std::min(__size, __osize);
int __r = traits_type::compare(_M_data(), __s, __len);
if (!__r)
__r = __size - __osize;
@@ -903,8 +903,8 @@
__throw_out_of_range("basic_string::compare");
size_type __osize = traits_type::length(__s);
- size_type __rsize = min(__size - __pos, __n1);
- size_type __len = min(__rsize, __osize);
+ size_type __rsize = std::min(__size - __pos, __n1);
+ size_type __len = std::min(__rsize, __osize);
int __r = traits_type::compare(_M_data() + __pos, __s, __len);
if (!__r)
__r = __rsize - __osize;
@@ -921,9 +921,9 @@
if (__pos > __size)
__throw_out_of_range("basic_string::compare");
- size_type __osize = min(traits_type::length(__s), __n2);
- size_type __rsize = min(__size - __pos, __n1);
- size_type __len = min(__rsize, __osize);
+ size_type __osize = std::min(traits_type::length(__s), __n2);
+ size_type __rsize = std::min(__size - __pos, __n1);
+ size_type __len = std::min(__rsize, __osize);
int __r = traits_type::compare(_M_data() + __pos, __s, __len);
if (!__r)
__r = __rsize - __osize;
@@ -937,7 +937,7 @@
{
typedef typename _Alloc::size_type size_type;
size_type __strsize = __str.size();
- size_type __bytes = min(__strsize, __bufsiz - 1);
+ size_type __bytes = std::min(__strsize, __bufsiz - 1);
_Traits::copy(__buf, __str.data(), __bytes);
__buf[__bytes] = _CharT();
}
--- basic_string.tcc.~1.28.~ 2002-11-01 18:30:35.000000000 +0100
+++ basic_string.tcc 2002-12-01 18:16:32.000000000 +0100
@@ -137,14 +137,14 @@
_S_construct(_InIter __beg, _InIter __end, const _Alloc& __a,
forward_iterator_tag)
{
- size_type __dnew = static_cast<size_type>(distance(__beg, __end));
-
if (__beg == __end && __a == _Alloc())
return _S_empty_rep()._M_refcopy();
// NB: Not required, but considered best practice.
if (__builtin_expect(__beg == _InIter(), 0))
__throw_logic_error("attempt to create string with null pointer");
+
+ size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
// Check for out_of_range and length_error exceptions.
_Rep* __r = _Rep::_S_create(__dnew, __a);
@@ -523,7 +523,7 @@
_M_replace_safe(iterator __i1, iterator __i2, _ForwardIter __k1,
_ForwardIter __k2)
{
- size_type __dnew = static_cast<size_type>(distance(__k1, __k2));
+ size_type __dnew = static_cast<size_type>(std::distance(__k1, __k2));
size_type __dold = __i2 - __i1;
size_type __dmax = this->max_size();