diff options
-rw-r--r-- | include/mupdf/xref.h | 1 | ||||
-rw-r--r-- | mupdf/xref.c | 24 |
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) { |