Skip to content

Commit b98ee86

Browse files
committed
[libc++] Use __is_address_in_range in vector
1 parent 69f3552 commit b98ee86

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

libcxx/include/__vector/vector.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1254,8 +1254,7 @@ _LIBCPP_CONSTEXPR_SINCE_CXX20 typename vector<_Tp, _Allocator>::iterator
12541254
vector<_Tp, _Allocator>::insert(const_iterator __position, size_type __n, const_reference __x) {
12551255
pointer __p = this->__begin_ + (__position - begin());
12561256
if (__n > 0) {
1257-
// We can't compare unrelated pointers inside constant expressions
1258-
if (!__libcpp_is_constant_evaluated() && __n <= static_cast<size_type>(this->__cap_ - this->__end_)) {
1257+
if (__n <= static_cast<size_type>(this->__cap_ - this->__end_)) {
12591258
size_type __old_n = __n;
12601259
pointer __old_last = this->__end_;
12611260
if (__n > static_cast<size_type>(this->__end_ - __p)) {
@@ -1266,7 +1265,7 @@ vector<_Tp, _Allocator>::insert(const_iterator __position, size_type __n, const_
12661265
if (__n > 0) {
12671266
__move_range(__p, __old_last, __p + __old_n);
12681267
const_pointer __xr = pointer_traits<const_pointer>::pointer_to(__x);
1269-
if (__p <= __xr && __xr < this->__end_)
1268+
if (std::__is_pointer_in_range(std::__to_address(__p), std::__to_address(__end_), std::addressof(__x)))
12701269
__xr += __old_n;
12711270
std::fill_n(__p, __n, *__xr);
12721271
}

0 commit comments

Comments
 (0)