diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2015-02-17 20:39:24 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2015-02-17 20:39:24 +0100 |
commit | 2ea1295e49e3e7a0873aac5a6345dd5759760d77 (patch) | |
tree | b1e1ff6360c670da8872a95fb6246ff8aae33185 | |
parent | 31186b61d979ba02c04ce68dcb66f7a5f1229c93 (diff) | |
download | mupdf-2ea1295e49e3e7a0873aac5a6345dd5759760d77.tar.xz |
Fix memory leak in fz_page.
-rw-r--r-- | source/fitz/document.c | 5 | ||||
-rw-r--r-- | source/pdf/js/pdf-js.c | 1 | ||||
-rw-r--r-- | source/pdf/pdf-page.c | 2 |
3 files changed, 6 insertions, 2 deletions
diff --git a/source/fitz/document.c b/source/fitz/document.c index 63c9fd29..40113469 100644 --- a/source/fitz/document.c +++ b/source/fitz/document.c @@ -342,7 +342,7 @@ fz_run_page(fz_context *ctx, fz_page *page, fz_device *dev, const fz_matrix *tra void * fz_new_page(fz_context *ctx, int size) { - fz_page *page = fz_calloc(ctx, 1, size); + fz_page *page = Memento_label(fz_calloc(ctx, 1, size), "fz_page"); page->refs = 1; return page; } @@ -360,7 +360,10 @@ fz_drop_page(fz_context *ctx, fz_page *page) { if (page) { if (--page->refs == 0 && page->drop_page_imp) + { page->drop_page_imp(ctx, page); + fz_free(ctx, page); + } } } diff --git a/source/pdf/js/pdf-js.c b/source/pdf/js/pdf-js.c index 008cebfb..84a14381 100644 --- a/source/pdf/js/pdf-js.c +++ b/source/pdf/js/pdf-js.c @@ -338,6 +338,7 @@ static pdf_jsimp_obj *field_getValue(void *jsctx, void *obj) return NULL; fval = pdf_field_value(js->ctx, js->doc, field); + /* TODO: free fval! */ return pdf_jsimp_from_string(js->imp, fval?fval:""); } diff --git a/source/pdf/pdf-page.c b/source/pdf/pdf-page.c index c9c92307..7917afbf 100644 --- a/source/pdf/pdf-page.c +++ b/source/pdf/pdf-page.c @@ -440,7 +440,7 @@ pdf_load_page(fz_context *ctx, pdf_document *doc, int number) pageref = pdf_lookup_page_obj(ctx, doc, number); pageobj = pdf_resolve_indirect(ctx, pageref); - page = fz_malloc_struct(ctx, pdf_page); + page = fz_new_page(ctx, sizeof *page); page->doc = (pdf_document*) fz_keep_document(ctx, &doc->super); page->super.drop_page_imp = (fz_page_drop_page_imp_fn *)pdf_drop_page_imp; |