Commit 4dd01774 authored by Tom Anderson's avatar Tom Anderson Committed by Commit Bot

Avoid libc++ assert failure when building with _LIBCPP_DEBUG=0

libc++ will assert when indexing one element past the end of a vector, but V8
uses this as the end iterator for ScopedPtrList.  Similarly, when there's no
elements in the vector, v[0] will also assert, so ScopedPtrList::begin() needs
to be updated too.  This CL changes ScopedPtrList to use std::vector::data() to
get the iterators.

BUG=chromium:923166
TBR=machenbach

Change-Id: Ic6a5176611d52ed592da743ecce44287c452b379
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1565543
Commit-Queue: Thomas Anderson <thomasanderson@chromium.org>
Reviewed-by: 's avatarNico Weber <thakis@chromium.org>
Auto-Submit: Thomas Anderson <thomasanderson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#60851}
parent e6e349dc
......@@ -390,9 +390,11 @@ class ScopedPtrList final {
typedef T** iterator;
inline iterator begin() const {
return reinterpret_cast<T**>(&buffer_[start_]);
return reinterpret_cast<T**>(buffer_.data() + start_);
}
inline iterator end() const {
return reinterpret_cast<T**>(buffer_.data() + end_);
}
inline iterator end() const { return reinterpret_cast<T**>(&buffer_[end_]); }
private:
std::vector<void*>& buffer_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment