diff options
author | Jeong Seok Gyo <seokgyo@gmail.com> | 2004-12-07 09:31:12 +0100 |
---|---|---|
committer | Jeong Seok Gyo <seokgyo@gmail.com> | 2004-12-07 09:31:12 +0100 |
commit | 8f92f8bf53224f4edd17cc82520b28c264d7f05a (patch) | |
tree | de1445cc4f80a8c10f941f42ccd47b1cdd9bfeaf | |
parent | 6bed81dda73a38ca993f1970125c3cf800f6cce8 (diff) | |
download | mupdf-8f92f8bf53224f4edd17cc82520b28c264d7f05a.tar.xz |
memory leak fix in pdfmerge
-rw-r--r-- | mupdf/save.c | 2 | ||||
-rw-r--r-- | mupdf/store.c | 2 | ||||
-rw-r--r-- | mupdf/stream.c | 4 | ||||
-rw-r--r-- | test/pdfmerge.c | 13 |
4 files changed, 15 insertions, 6 deletions
diff --git a/mupdf/save.c b/mupdf/save.c index e5d42a34..aaa02a75 100644 --- a/mupdf/save.c +++ b/mupdf/save.c @@ -308,10 +308,12 @@ pdf_savepdf(pdf_xref *xref, char *path, pdf_crypt *encrypt) xref->startxref = startxref; + if(ofsbuf) fz_free(ofsbuf); fz_closefile(out); return nil; cleanup: + if(ofsbuf) fz_free(ofsbuf); fz_closefile(out); return error; } diff --git a/mupdf/store.c b/mupdf/store.c index 1c7f09d3..bfeb5bff 100644 --- a/mupdf/store.c +++ b/mupdf/store.c @@ -95,6 +95,8 @@ void pdf_dropstore(pdf_store *store) { pdf_emptystore(store); + fz_drophash(store->hash); + fz_free(store); } fz_error * diff --git a/mupdf/stream.c b/mupdf/stream.c index 8d2cf5a1..c0a99d6d 100644 --- a/mupdf/stream.c +++ b/mupdf/stream.c @@ -360,11 +360,9 @@ pdf_openrawstream(pdf_xref *xref, int oid, int gen) } error = fz_pushfilter(xref->file, filter); + fz_dropfilter(filter); if (error) - { - fz_dropfilter(filter); return error; - } xref->stream = xref->file; return nil; diff --git a/test/pdfmerge.c b/test/pdfmerge.c index 732f30c7..3bb7c868 100644 --- a/test/pdfmerge.c +++ b/test/pdfmerge.c @@ -22,6 +22,7 @@ int main(int argc, char **argv) char *savename = "out.pdf"; pdf_pagetree *srcpages; fz_obj *srcrefs; + fz_obj *newsrcrefs; fz_obj *dstrefs; pdf_xref *dst; pdf_xref *src; @@ -120,17 +121,20 @@ int main(int argc, char **argv) fz_abort(error); } - error = pdf_transplant(dst, src, &srcrefs, srcrefs); + error = pdf_transplant(dst, src, &newsrcrefs, srcrefs); if (error) fz_abort(error); - for (k = 0; k < fz_arraylen(srcrefs); k++) + for (k = 0; k < fz_arraylen(newsrcrefs); k++) { - error = fz_arraypush(dstrefs, fz_arrayget(srcrefs, k)); + error = fz_arraypush(dstrefs, fz_arrayget(newsrcrefs, k)); if (error) fz_abort(error); } + fz_dropobj(srcrefs); + fz_dropobj(newsrcrefs); + pdf_droppagetree(srcpages); pdf_closepdf(src); @@ -218,6 +222,9 @@ int main(int argc, char **argv) if (error) fz_abort(error); + fz_dropobj(dstrefs); + pdf_closepdf(dst); + return 0; } |