fix: CHECK when adding view as its own child (#42108)

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot] 2024-05-10 10:30:58 +02:00 committed by GitHub
parent 12bc4dc6c0
commit 2fc89a6b2c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 19 additions and 1 deletions

View file

@ -189,6 +189,14 @@ void View::AddChildViewAt(gin::Handle<View> child,
// has a View, possibly a wrapper view around the underlying platform View.
if (!view_)
return;
// This will CHECK and crash in View::AddChildViewAtImpl if not handled here.
if (view_ == child->view()) {
gin_helper::ErrorThrower(isolate()).ThrowError(
"A view cannot be added as its own child");
return;
}
size_t index =
std::min(child_views_.size(), maybe_index.value_or(child_views_.size()));
child_views_.emplace(child_views_.begin() + index, // index