From 691fdba5ec537e8ebcd4f98a18fabb2731668ef8 Mon Sep 17 00:00:00 2001 From: Mitch Curtis Date: Wed, 14 Oct 2020 11:06:01 +0200 Subject: QQuickShaderEffect: fix crash when hiding parent It's possible for itemChange to be called during destruction when deleting the QQuickShaderEffectImpl. We nullify m_impl before deleting it via another pointer to it, so we must check that it's not null before trying to use it. Fixes: QTBUG-86402 Change-Id: If4955445f7cc0d1f376bc9b86b95e1cca4d88ede Reviewed-by: Laszlo Agocs Reviewed-by: Fabian Kosmale (cherry picked from commit 266cd7638d887b31d56964a0f13fe208821703b1) --- src/quick/items/qquickshadereffect.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/quick/items/qquickshadereffect.cpp b/src/quick/items/qquickshadereffect.cpp index 78458ce6b0..1d931a656f 100644 --- a/src/quick/items/qquickshadereffect.cpp +++ b/src/quick/items/qquickshadereffect.cpp @@ -843,7 +843,11 @@ void QQuickShaderEffect::itemChange(ItemChange change, const ItemChangeData &val return; } #endif - m_impl->handleItemChange(change, value); + // It's possible for itemChange to be called during destruction when deleting + // the QQuickShaderEffectImpl. We nullify m_impl before deleting it via another pointer + // to it, so we must check that it's not null before trying to use it here. + if (m_impl) + m_impl->handleItemChange(change, value); QQuickItem::itemChange(change, value); } -- cgit v1.2.3