Fix a number of other clang warnings in libstdc++, which could appear
when building other C++ software with it. Also fix one actual bug in libsupc++, which was exposed by such a warning. This latter fix is the only functional change. MFC after: 1 week
This commit is contained in:
parent
e1bc3b4134
commit
99da76dc3d
@ -54,8 +54,8 @@ namespace __gnu_debug
|
||||
static_cast<const _Sequence*>(_M_sequence)->begin();
|
||||
std::pair<difference_type, _Distance_precision> __dist =
|
||||
this->_M_get_distance(__begin, *this);
|
||||
bool __ok = (__dist.second == __dp_exact && __dist.first >= -__n
|
||||
|| __dist.second != __dp_exact && __dist.first > 0);
|
||||
bool __ok = ((__dist.second == __dp_exact && __dist.first >= -__n)
|
||||
|| (__dist.second != __dp_exact && __dist.first > 0));
|
||||
return __ok;
|
||||
}
|
||||
else
|
||||
@ -64,8 +64,8 @@ namespace __gnu_debug
|
||||
static_cast<const _Sequence*>(_M_sequence)->end();
|
||||
std::pair<difference_type, _Distance_precision> __dist =
|
||||
this->_M_get_distance(*this, __end);
|
||||
bool __ok = (__dist.second == __dp_exact && __dist.first >= __n
|
||||
|| __dist.second != __dp_exact && __dist.first > 0);
|
||||
bool __ok = ((__dist.second == __dp_exact && __dist.first >= __n)
|
||||
|| (__dist.second != __dp_exact && __dist.first > 0));
|
||||
return __ok;
|
||||
}
|
||||
}
|
||||
|
@ -1143,7 +1143,7 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
|
||||
}
|
||||
else
|
||||
{
|
||||
char* __kind;
|
||||
const char* __kind;
|
||||
|
||||
switch (__r->_M_tag)
|
||||
{
|
||||
|
@ -499,9 +499,9 @@ __do_dyncast (ptrdiff_t src2dst,
|
||||
result.whole2dst =
|
||||
__sub_kind (result.whole2dst | result2.whole2dst);
|
||||
}
|
||||
else if ((result.dst_ptr != 0 & result2.dst_ptr != 0)
|
||||
|| (result.dst_ptr != 0 & result2_ambig)
|
||||
|| (result2.dst_ptr != 0 & result_ambig))
|
||||
else if ((result.dst_ptr != 0 && result2.dst_ptr != 0)
|
||||
|| (result.dst_ptr != 0 && result2_ambig)
|
||||
|| (result2.dst_ptr != 0 && result_ambig))
|
||||
{
|
||||
// Found two different DST_TYPE bases, or a valid one and a set of
|
||||
// ambiguous ones, must disambiguate. See whether SRC_PTR is
|
||||
|
@ -146,7 +146,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
locale::_S_normalize_category(category __cat)
|
||||
{
|
||||
int __ret = 0;
|
||||
if (__cat == none || (__cat & all) && !(__cat & ~all))
|
||||
if (__cat == none || ((__cat & all) && !(__cat & ~all)))
|
||||
__ret = __cat;
|
||||
else
|
||||
{
|
||||
|
@ -311,11 +311,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
strstreambuf::_M_free(char* p)
|
||||
{
|
||||
if (p)
|
||||
{
|
||||
if (_M_free_fun)
|
||||
_M_free_fun(p);
|
||||
else
|
||||
delete[] p;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
strstreambuf::_M_setup(char* get, char* put, streamsize n)
|
||||
|
@ -316,18 +316,22 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
|
||||
else
|
||||
__z->_M_parent->_M_right = __x;
|
||||
if (__leftmost == __z)
|
||||
{
|
||||
if (__z->_M_right == 0) // __z->_M_left must be null also
|
||||
__leftmost = __z->_M_parent;
|
||||
// makes __leftmost == _M_header if __z == __root
|
||||
else
|
||||
__leftmost = _Rb_tree_node_base::_S_minimum(__x);
|
||||
}
|
||||
if (__rightmost == __z)
|
||||
{
|
||||
if (__z->_M_left == 0) // __z->_M_right must be null also
|
||||
__rightmost = __z->_M_parent;
|
||||
// makes __rightmost == _M_header if __z == __root
|
||||
else // __x == __z->_M_left
|
||||
__rightmost = _Rb_tree_node_base::_S_maximum(__x);
|
||||
}
|
||||
}
|
||||
if (__y->_M_color != _S_red)
|
||||
{
|
||||
while (__x != __root && (__x == 0 || __x->_M_color == _S_black))
|
||||
|
Loading…
Reference in New Issue
Block a user