From d53079cfcc0452a30954cab4ea932315b4cfb6f5 Mon Sep 17 00:00:00 2001 From: Raman Varabets Date: Sun, 2 Jun 2024 18:26:40 +0800 Subject: [PATCH] Free color glyphs hash table properly on error. Signed-off-by: Raman Varabets --- src/cairo-svg-surface.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/cairo-svg-surface.c b/src/cairo-svg-surface.c index 187363e25..3f08205f1 100644 --- a/src/cairo-svg-surface.c +++ b/src/cairo-svg-surface.c @@ -1104,7 +1104,7 @@ _cairo_svg_surface_create_for_document (cairo_svg_document_t *document, surface->color_glyphs = _cairo_hash_table_create (_cairo_svg_color_glyph_equal); if (unlikely (surface->color_glyphs == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP; // FIXME + goto CLEANUP1; } surface->xml_node = _cairo_svg_stream_create (); @@ -1113,7 +1113,7 @@ _cairo_svg_surface_create_for_document (cairo_svg_document_t *document, surface->source_surfaces = _cairo_hash_table_create (_cairo_svg_source_surface_equal); if (unlikely (surface->source_surfaces == NULL)) { status = _cairo_error (CAIRO_STATUS_NO_MEMORY); - goto CLEANUP; + goto CLEANUP2; } _cairo_surface_clipper_init (&surface->clipper, _cairo_svg_surface_clipper_intersect_clip_path); @@ -1137,8 +1137,9 @@ _cairo_svg_surface_create_for_document (cairo_svg_document_t *document, } /* ignore status as we are on the error path */ - CLEANUP: +CLEANUP2: (void) _cairo_hash_table_destroy (surface->color_glyphs); +CLEANUP1: (void) _cairo_svg_stream_destroy (&surface->xml_node); (void) _cairo_svg_document_destroy (document);