diff options
author | Timm Bäder <mail@baedert.org> | 2020-12-21 12:49:06 +0100 |
---|---|---|
committer | Timm Bäder <mail@baedert.org> | 2020-12-21 12:49:06 +0100 |
commit | bce4d669ee6c66267c7017e440e3c4c4f244e18a (patch) | |
tree | 933b4e7d3a4275ebee0c2488f556b2d882ef646c | |
parent | e7a326e230b763ee97798c49d7a03af2f9ab93ae (diff) | |
download | gtk+-bce4d669ee6c66267c7017e440e3c4c4f244e18a.tar.gz |
gskpango: Fix a potential cairo_t leak
The previous early return did not cairo_destroy() it.
-rw-r--r-- | gtk/gskpango.c | 9 |
1 files 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); |