summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2015-02-17 20:39:24 +0100
committerTor Andersson <tor.andersson@artifex.com>2015-02-17 20:39:24 +0100
commit2ea1295e49e3e7a0873aac5a6345dd5759760d77 (patch)
treeb1e1ff6360c670da8872a95fb6246ff8aae33185
parent31186b61d979ba02c04ce68dcb66f7a5f1229c93 (diff)
downloadmupdf-2ea1295e49e3e7a0873aac5a6345dd5759760d77.tar.xz
Fix memory leak in fz_page.
-rw-r--r--source/fitz/document.c5
-rw-r--r--source/pdf/js/pdf-js.c1
-rw-r--r--source/pdf/pdf-page.c2
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;