From 9b655e3666a6eae6f217e584ef3915c8ff99ddc1 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Tue, 28 May 2019 15:18:04 +0200 Subject: Make extra sure Compositables don't refer back to layers after reassignment. --- gfx/layers/composite/ImageLayerComposite.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'gfx/layers/composite/ImageLayerComposite.cpp') diff --git a/gfx/layers/composite/ImageLayerComposite.cpp b/gfx/layers/composite/ImageLayerComposite.cpp index bac9f3790..6867aaa22 100644 --- a/gfx/layers/composite/ImageLayerComposite.cpp +++ b/gfx/layers/composite/ImageLayerComposite.cpp @@ -50,9 +50,14 @@ bool ImageLayerComposite::SetCompositableHost(CompositableHost* aHost) { switch (aHost->GetType()) { - case CompositableType::IMAGE: - mImageHost = static_cast(aHost); + case CompositableType::IMAGE: { + ImageHost* newImageHost = static_cast(aHost); + if (mImageHost && newImageHost != mImageHost) { + mImageHost->Detach(this); + } + mImageHost = newImageHost; return true; + } default: return false; } -- cgit v1.2.3