From 537445c4f07d02e84e6838f6f4c218487c7e113d Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 10 Feb 2022 21:17:58 -0500 Subject: [PATCH 1/3] user-font: Plug some memory leaks We were leaking a cairo_t and a surface here, in some code paths. --- src/cairo-user-font.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/cairo-user-font.c b/src/cairo-user-font.c index d6427f060..2d3c691f0 100644 --- a/src/cairo-user-font.c +++ b/src/cairo-user-font.c @@ -187,10 +187,13 @@ _cairo_user_scaled_glyph_init (void *abstract_font, status = cairo_status (cr); scaled_glyph->recording_is_color = TRUE; } + cairo_destroy (cr); } if (status == (cairo_int_status_t)CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED && face->scaled_font_methods.render_glyph) { + if (recording_surface) + cairo_surface_destroy (recording_surface); recording_surface = _cairo_user_scaled_font_create_recording_surface (scaled_font, FALSE); cr = _cairo_user_scaled_font_create_recording_context (scaled_font, recording_surface, FALSE); From 139f3f25b132c173f64a6946d518dcc8a35f168e Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Thu, 10 Feb 2022 22:19:10 -0500 Subject: [PATCH 2/3] Plug another memory leak --- src/cairo-user-font.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cairo-user-font.c b/src/cairo-user-font.c index 2d3c691f0..84469a937 100644 --- a/src/cairo-user-font.c +++ b/src/cairo-user-font.c @@ -312,6 +312,7 @@ _cairo_user_scaled_glyph_init (void *abstract_font, _cairo_scaled_glyph_set_surface (scaled_glyph, &scaled_font->base, (cairo_image_surface_t *) surface); + surface = NULL; } if (scaled_glyph->recording_is_color && (info & CAIRO_SCALED_GLYPH_INFO_COLOR_SURFACE)) { @@ -319,7 +320,11 @@ _cairo_user_scaled_glyph_init (void *abstract_font, &scaled_font->base, (cairo_image_surface_t *)surface, FALSE); + surface = NULL; } + + if (surface) + cairo_surface_destroy(surface); } if (info & CAIRO_SCALED_GLYPH_INFO_PATH) { From 1bc922d0454080475844dcb2bf32eaa0c9b79889 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 11 Feb 2022 10:58:39 +0000 Subject: [PATCH 3/3] Apply 1 suggestion(s) to 1 file(s) --- src/cairo-user-font.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cairo-user-font.c b/src/cairo-user-font.c index 84469a937..76f64ebfb 100644 --- a/src/cairo-user-font.c +++ b/src/cairo-user-font.c @@ -324,7 +324,7 @@ _cairo_user_scaled_glyph_init (void *abstract_font, } if (surface) - cairo_surface_destroy(surface); + cairo_surface_destroy (surface); } if (info & CAIRO_SCALED_GLYPH_INFO_PATH) {