OSDN Git Service

cast the private brush data pointer before deleting it
authorIvailo Monev <xakepa10@gmail.com>
Sun, 5 Jun 2022 10:58:57 +0000 (13:58 +0300)
committerIvailo Monev <xakepa10@gmail.com>
Sun, 5 Jun 2022 10:58:57 +0000 (13:58 +0300)
fixes new-delete-type-mismatch

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
src/gui/painting/qbrush.cpp

index 641d1e5..51e4f9f 100644 (file)
@@ -479,8 +479,23 @@ void QBrush::detach(Qt::BrushStyle newStyle)
     x->color = d->color;
     x->transform = d->transform;
 
-    if (!d->ref.deref())
-        delete d;
+    if (!d->ref.deref()) {
+        switch (d->style) {
+            case Qt::TexturePattern: {
+                delete static_cast<QTexturedBrushData*>(d);
+                break;
+            }
+            case Qt::LinearGradientPattern:
+            case Qt::RadialGradientPattern: {
+                delete static_cast<QGradientBrushData*>(d);
+                break;
+            }
+            default: {
+                delete d;
+                break;
+            }
+        }
+    }
     d = x.take();
 }