summaryrefslogtreecommitdiff
path: root/src/cairo-pdf-surface.c
diff options
context:
space:
mode:
authorFélix Poisot <felix@lhfblc.fr>2020-11-21 11:58:59 +0000
committerFélix Poisot <felix@lhfblc.fr>2020-11-21 11:58:59 +0000
commit8913b6e2fce42185c5ef8227be4d0b821d37f71d (patch)
treede45733dcd73b0006db29823e327fa69c2f2e4ea /src/cairo-pdf-surface.c
parent577477207a300fd75c93da93dbb233256d8b48d8 (diff)
The array introduced in bff47b43 isn't cleared on surface finish
Diffstat (limited to 'src/cairo-pdf-surface.c')
-rw-r--r--src/cairo-pdf-surface.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c
index 93fc9022c..4a7afe960 100644
--- a/src/cairo-pdf-surface.c
+++ b/src/cairo-pdf-surface.c
@@ -2207,6 +2207,7 @@ _cairo_pdf_surface_finish (void *abstract_surface)
cairo_pdf_resource_t catalog;
cairo_status_t status, status2;
int size, i;
+ cairo_pdf_source_surface_t doc_surface;
cairo_pdf_jbig2_global_t *global;
char *label;
@@ -2287,6 +2288,12 @@ _cairo_pdf_surface_finish (void *abstract_surface)
_cairo_array_fini (&surface->alpha_linear_functions);
_cairo_array_fini (&surface->page_patterns);
_cairo_array_fini (&surface->page_surfaces);
+
+ size = _cairo_array_num_elements (&surface->doc_surfaces);
+ for (i = 0; i < size; i++) {
+ _cairo_array_copy_element (&surface->doc_surfaces, i, &doc_surface);
+ cairo_surface_destroy (doc_surface.surface);
+ }
_cairo_array_fini (&surface->doc_surfaces);
_cairo_hash_table_foreach (surface->all_surfaces,
_cairo_pdf_source_surface_entry_pluck,