summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mupdf/xref.h1
-rw-r--r--mupdf/xref.c24
2 files changed, 24 insertions, 1 deletions
diff --git a/include/mupdf/xref.h b/include/mupdf/xref.h
index 98f45a39..d16d81f4 100644
--- a/include/mupdf/xref.h
+++ b/include/mupdf/xref.h
@@ -41,6 +41,7 @@ struct pdf_xrefentry_s
fz_error *pdf_newxref(pdf_xref **);
fz_error *pdf_repairxref(pdf_xref *, char *filename);
fz_error *pdf_loadxref(pdf_xref *, char *filename);
+fz_error *pdf_initxref(pdf_xref *);
fz_error *pdf_openpdf(pdf_xref **, char *filename);
fz_error *pdf_updatexref(pdf_xref *, char *filename);
diff --git a/mupdf/xref.c b/mupdf/xref.c
index 2c92bbe6..c5305b28 100644
--- a/mupdf/xref.c
+++ b/mupdf/xref.c
@@ -2,7 +2,8 @@
#include <mupdf.h>
/*
- * initialize new empty xref
+ * create xref structure.
+ * needs to be initialized by initxref, openxref or repairxref.
*/
fz_error *
@@ -73,6 +74,27 @@ pdf_closexref(pdf_xref *xref)
fz_free(xref);
}
+fz_error *
+pdf_initxref(pdf_xref *xref)
+{
+ xref->table = fz_malloc(sizeof(pdf_xrefentry) * 128);
+ if (!xref->table)
+ return fz_outofmem;
+
+ xref->cap = 128;
+ xref->len = 1;
+
+ xref->table[0].type = 'f';
+ xref->table[0].mark = 0;
+ xref->table[0].ofs = 0;
+ xref->table[0].gen = 65535;
+ xref->table[0].stmbuf = nil;
+ xref->table[0].stmofs = 0;
+ xref->table[0].obj = nil;
+
+ return nil;
+}
+
void
pdf_flushxref(pdf_xref *xref, int force)
{