Commit 47dba4a9 authored by Yuki Yamada's avatar Yuki Yamada Committed by Commit Bot

Layout: Add LayoutObject::is_destroyed when DCHECK is on

Add LayoutObject::is_destroyed which will be used in NOT_DESTROYED() to
find Use-after-Free bugs.

Bug: 1030176
Change-Id: Id793366fa732e57b179f637abb46e884c5913e61
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2444672
Commit-Queue: Yuki Yamada <yukiy@chromium.org>
Reviewed-by: default avatarIan Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: default avatarKeishi Hattori <keishi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#815531}
parent e8923087
......@@ -190,6 +190,9 @@ struct SameSizeAsLayoutObject : ImageResourceObserver, DisplayItemClient {
// The following fields are in FragmentData.
PhysicalOffset paint_offset_;
std::unique_ptr<int> rare_data_;
#if DCHECK_IS_ON()
bool is_destroyed_;
#endif
};
ASSERT_SIZE(LayoutObject, SameSizeAsLayoutObject);
......@@ -329,6 +332,9 @@ LayoutObject::~LayoutObject() {
DCHECK(BeingDestroyed());
#endif
InstanceCounters::DecrementCounter(InstanceCounters::kLayoutObjectCounter);
#if DCHECK_IS_ON()
is_destroyed_ = true;
#endif
}
bool LayoutObject::IsDescendantOf(const LayoutObject* obj) const {
......
......@@ -4135,6 +4135,10 @@ class CORE_EXPORT LayoutObject : public ImageResourceObserver,
static bool affects_parent_block_;
FragmentData fragment_;
#if DCHECK_IS_ON()
bool is_destroyed_ = false;
#endif
};
// Allow equality comparisons of LayoutObjects by reference or pointer,
......
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