kbrown / rpms / libreoffice

Forked from rpms/libreoffice 2 years ago
Clone

Blame SOURCES/0212-vcl-aAlphaBitmap.ImplGetImpBitmap-seen-as-0.patch

f325b2
From 812ccd30a4d088f81c1aef29296aa702a0ba03b3 Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Thu, 15 Oct 2015 17:18:28 +0200
f325b2
Subject: [PATCH 212/398] vcl: aAlphaBitmap.ImplGetImpBitmap() seen as 0
f325b2
f325b2
Change-Id: I3f34f0315045d33ff6e498e24c0dacb0aabb0ff9
f325b2
(cherry picked from commit 293dd731e9815c06ba8eca1fb83d86276103c820)
f325b2
---
f325b2
 desktop/qa/desktop_lib/test_desktop_lib.cxx |  8 ++++++++
f325b2
 vcl/source/outdev/bitmap.cxx                | 11 +++++++----
f325b2
 2 files changed, 15 insertions(+), 4 deletions(-)
f325b2
f325b2
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
index c3cc748a5d61..df8723b8cedd 100644
f325b2
--- a/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
+++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx
f325b2
@@ -298,6 +298,14 @@ void DesktopLOKTest::testPaintTile()
f325b2
     // 256.
f325b2
     pDocument->pClass->paintTile(pDocument, aBuffer.data(), nCanvasWidth, nCanvasHeight, nTilePosX, nTilePosY, nTileWidth, nTileHeight);
f325b2
 
f325b2
+    // This crashed in OutputDevice::DrawDeviceAlphaBitmap().
f325b2
+    nCanvasWidth = 200;
f325b2
+    nCanvasHeight = 200;
f325b2
+    nTileWidth = 4000;
f325b2
+    nTileHeight = 4000;
f325b2
+    aBuffer.resize(nCanvasWidth * nCanvasHeight * 4);
f325b2
+    pDocument->pClass->paintTile(pDocument, aBuffer.data(), nCanvasWidth, nCanvasHeight, nTilePosX, nTilePosY, nTileWidth, nTileHeight);
f325b2
+
f325b2
     closeDoc();
f325b2
 }
f325b2
 
f325b2
diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
f325b2
index 3f415d458878..e845562b27aa 100644
f325b2
--- a/vcl/source/outdev/bitmap.cxx
f325b2
+++ b/vcl/source/outdev/bitmap.cxx
f325b2
@@ -670,11 +670,14 @@ void OutputDevice::DrawDeviceAlphaBitmap( const Bitmap& rBmp, const AlphaMask& r
f325b2
             if (mpAlphaVDev)
f325b2
             {
f325b2
                 Bitmap aAlphaBitmap( mpAlphaVDev->GetBitmap( aRelPt, aOutSz ) );
f325b2
-                SalBitmap* pSalAlphaBmp2 = aAlphaBitmap.ImplGetImpBitmap()->ImplGetSalBitmap();
f325b2
-                if (mpGraphics->BlendAlphaBitmap(aTR, *pSalSrcBmp, *pSalAlphaBmp, *pSalAlphaBmp2, this))
f325b2
+                if (aAlphaBitmap.ImplGetImpBitmap())
f325b2
                 {
f325b2
-                    mpAlphaVDev->BlendBitmap(aTR, rAlpha);
f325b2
-                    return;
f325b2
+                    SalBitmap* pSalAlphaBmp2 = aAlphaBitmap.ImplGetImpBitmap()->ImplGetSalBitmap();
f325b2
+                    if (mpGraphics->BlendAlphaBitmap(aTR, *pSalSrcBmp, *pSalAlphaBmp, *pSalAlphaBmp2, this))
f325b2
+                    {
f325b2
+                        mpAlphaVDev->BlendBitmap(aTR, rAlpha);
f325b2
+                        return;
f325b2
+                    }
f325b2
                 }
f325b2
             }
f325b2
             else
f325b2
-- 
f325b2
2.12.0
f325b2