vcl/headless/CairoCommon.cxx |   15 +++++++++++++++
 1 file changed, 15 insertions(+)

New commits:
commit ba63c4199d19b87d53bb167397180fc2d8686ff5
Author:     Caolán McNamara <[email protected]>
AuthorDate: Thu May 11 09:05:48 2023 +0100
Commit:     Caolán McNamara <[email protected]>
CommitDate: Thu May 11 12:56:35 2023 +0200

    ofz#58818 Direct-leak
    
    Change-Id: I8974b998397aa521c9ee61651b5ce45d4189b303
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151662
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <[email protected]>

diff --git a/vcl/headless/CairoCommon.cxx b/vcl/headless/CairoCommon.cxx
index 2b732f627f30..d9c77afa1e56 100644
--- a/vcl/headless/CairoCommon.cxx
+++ b/vcl/headless/CairoCommon.cxx
@@ -879,6 +879,13 @@ bool CairoCommon::drawPolyPolygon(const 
basegfx::B2DHomMatrix& rObjectToDevice,
         return true;
 
     cairo_t* cr = getCairoContext(true, bAntiAlias);
+    if (cairo_status(cr) != CAIRO_STATUS_SUCCESS)
+    {
+        SAL_WARN("vcl.gdi",
+                 "cannot render to surface: " << 
cairo_status_to_string(cairo_status(cr)));
+        releaseCairoContext(cr, true, basegfx::B2DRange());
+        return true;
+    }
     clipRegion(cr);
 
     // Set full (Object-to-Device) transformation - if used
@@ -1648,6 +1655,14 @@ bool CairoCommon::drawAlphaBitmap(const SalTwoRect& rTR, 
const SalBitmap& rSourc
     }
 
     cairo_t* cr = getCairoContext(false, bAntiAlias);
+    if (cairo_status(cr) != CAIRO_STATUS_SUCCESS)
+    {
+        SAL_WARN("vcl.gdi",
+                 "cannot render to surface: " << 
cairo_status_to_string(cairo_status(cr)));
+        releaseCairoContext(cr, false, basegfx::B2DRange());
+        return true;
+    }
+
     clipRegion(cr);
 
     cairo_rectangle(cr, rTR.mnDestX, rTR.mnDestY, rTR.mnDestWidth, 
rTR.mnDestHeight);

Reply via email to