[gtk/wip/baedert/for-master] gskpango: Fix a potential cairo_t leak



commit bce4d669ee6c66267c7017e440e3c4c4f244e18a
Author: Timm Bäder <mail baedert org>
Date:   Mon Dec 21 12:49:06 2020 +0100

    gskpango: Fix a potential cairo_t leak
    
    The previous early return did not cairo_destroy() it.

 gtk/gskpango.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)
---
diff --git a/gtk/gskpango.c b/gtk/gskpango.c
index 9242a9bc86..2fa53f0624 100644
--- a/gtk/gskpango.c
+++ b/gtk/gskpango.c
@@ -234,7 +234,6 @@ gsk_pango_renderer_draw_shape (PangoRenderer  *renderer,
                                int             y)
 {
   GskPangoRenderer *crenderer = (GskPangoRenderer *) (renderer);
-  cairo_t *cr;
   PangoLayout *layout;
   PangoCairoShapeRendererFunc shape_renderer;
   gpointer shape_renderer_data;
@@ -263,17 +262,21 @@ gsk_pango_renderer_draw_shape (PangoRenderer  *renderer,
 
   if (!handled)
     {
-      cr = gtk_snapshot_append_cairo (crenderer->snapshot, &crenderer->bounds);
+      cairo_t *cr;
 
       layout = pango_renderer_get_layout (renderer);
       if (!layout)
         return;
 
+      cr = gtk_snapshot_append_cairo (crenderer->snapshot, &crenderer->bounds);
       shape_renderer = pango_cairo_context_get_shape_renderer (pango_layout_get_context (layout),
                                                                &shape_renderer_data);
 
       if (!shape_renderer)
-        return;
+        {
+          cairo_destroy (cr);
+          return;
+        }
 
       set_color (crenderer, PANGO_RENDER_PART_FOREGROUND, cr);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]