From 684ed0323cd979c5ef472ef431ccbbb145c35e9f Mon Sep 17 00:00:00 2001 From: Sukyoung Oh Date: Tue, 29 Mar 2022 16:50:39 +0900 Subject: Reset provider's texture if QQuickNiniPatchImage's source is invalid When QQuickNinePatchImage is used as a source of other shader related object like ShaderEffect, OpacityMask or etc., there isn't a implementation to invalidate the provider's texture when QQuickNinePatchImage is invalid. It causes segmentation fault due to dangling pointer. Fixes: QTBUG-100508 Change-Id: I9ea25fe68b41d3b15503e3dccea3a816ad485a20 (cherry picked from commit 81bbd0b45aeb1eb98efd9153c79ebf4f0e4be839) Reviewed-by: Reviewed-by: Mitch Curtis --- src/imports/controls/imagine/qquickninepatchimage.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/imports/controls') diff --git a/src/imports/controls/imagine/qquickninepatchimage.cpp b/src/imports/controls/imagine/qquickninepatchimage.cpp index dfad628b..5b74f6f5 100644 --- a/src/imports/controls/imagine/qquickninepatchimage.cpp +++ b/src/imports/controls/imagine/qquickninepatchimage.cpp @@ -439,6 +439,8 @@ QSGNode *QQuickNinePatchImage::updatePaintNode(QSGNode *oldNode, UpdatePaintNode QSizeF sz = size(); QImage image = d->pix.image(); if (!sz.isValid() || image.isNull()) { + if (d->provider) + d->provider->updateTexture(nullptr); delete oldNode; return nullptr; } -- cgit v1.2.3