summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeong Seok Gyo <seokgyo@gmail.com>2004-12-07 09:31:12 +0100
committerJeong Seok Gyo <seokgyo@gmail.com>2004-12-07 09:31:12 +0100
commit8f92f8bf53224f4edd17cc82520b28c264d7f05a (patch)
treede1445cc4f80a8c10f941f42ccd47b1cdd9bfeaf
parent6bed81dda73a38ca993f1970125c3cf800f6cce8 (diff)
downloadmupdf-8f92f8bf53224f4edd17cc82520b28c264d7f05a.tar.xz
memory leak fix in pdfmerge
-rw-r--r--mupdf/save.c2
-rw-r--r--mupdf/store.c2
-rw-r--r--mupdf/stream.c4
-rw-r--r--test/pdfmerge.c13
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;
}