Pull in r201021 from upstream libc++ trunk:
Fix for PR18735 - self-assignment for map/multimap gives incorrect results in C++03 (Please note: that is an LLVM PR identifier, not a FreeBSD one.) Reported by: rakuco MFC after: 3 days
This commit is contained in:
parent
a99f629278
commit
93a64e66d4
@ -884,10 +884,12 @@ public:
|
||||
#if __cplusplus >= 201103L
|
||||
__tree_ = __m.__tree_;
|
||||
#else
|
||||
__tree_.clear();
|
||||
__tree_.value_comp() = __m.__tree_.value_comp();
|
||||
__tree_.__copy_assign_alloc(__m.__tree_);
|
||||
insert(__m.begin(), __m.end());
|
||||
if (this != &__m) {
|
||||
__tree_.clear();
|
||||
__tree_.value_comp() = __m.__tree_.value_comp();
|
||||
__tree_.__copy_assign_alloc(__m.__tree_);
|
||||
insert(__m.begin(), __m.end());
|
||||
}
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
@ -1616,10 +1618,12 @@ public:
|
||||
#if __cplusplus >= 201103L
|
||||
__tree_ = __m.__tree_;
|
||||
#else
|
||||
__tree_.clear();
|
||||
__tree_.value_comp() = __m.__tree_.value_comp();
|
||||
__tree_.__copy_assign_alloc(__m.__tree_);
|
||||
insert(__m.begin(), __m.end());
|
||||
if (this != &__m) {
|
||||
__tree_.clear();
|
||||
__tree_.value_comp() = __m.__tree_.value_comp();
|
||||
__tree_.__copy_assign_alloc(__m.__tree_);
|
||||
insert(__m.begin(), __m.end());
|
||||
}
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
|
@ -831,12 +831,14 @@ public:
|
||||
#if __cplusplus >= 201103L
|
||||
__table_ = __u.__table_;
|
||||
#else
|
||||
__table_.clear();
|
||||
__table_.hash_function() = __u.__table_.hash_function();
|
||||
__table_.key_eq() = __u.__table_.key_eq();
|
||||
__table_.max_load_factor() = __u.__table_.max_load_factor();
|
||||
__table_.__copy_assign_alloc(__u.__table_);
|
||||
insert(__u.begin(), __u.end());
|
||||
if (this != &__u) {
|
||||
__table_.clear();
|
||||
__table_.hash_function() = __u.__table_.hash_function();
|
||||
__table_.key_eq() = __u.__table_.key_eq();
|
||||
__table_.max_load_factor() = __u.__table_.max_load_factor();
|
||||
__table_.__copy_assign_alloc(__u.__table_);
|
||||
insert(__u.begin(), __u.end());
|
||||
}
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
@ -1567,12 +1569,14 @@ public:
|
||||
#if __cplusplus >= 201103L
|
||||
__table_ = __u.__table_;
|
||||
#else
|
||||
__table_.clear();
|
||||
__table_.hash_function() = __u.__table_.hash_function();
|
||||
__table_.key_eq() = __u.__table_.key_eq();
|
||||
__table_.max_load_factor() = __u.__table_.max_load_factor();
|
||||
__table_.__copy_assign_alloc(__u.__table_);
|
||||
insert(__u.begin(), __u.end());
|
||||
if (this != &__u) {
|
||||
__table_.clear();
|
||||
__table_.hash_function() = __u.__table_.hash_function();
|
||||
__table_.key_eq() = __u.__table_.key_eq();
|
||||
__table_.max_load_factor() = __u.__table_.max_load_factor();
|
||||
__table_.__copy_assign_alloc(__u.__table_);
|
||||
insert(__u.begin(), __u.end());
|
||||
}
|
||||
#endif
|
||||
return *this;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user