summaryrefslogtreecommitdiff
path: root/mupdf/nametree.c
diff options
context:
space:
mode:
Diffstat (limited to 'mupdf/nametree.c')
-rw-r--r--mupdf/nametree.c30
1 files changed, 30 insertions, 0 deletions
diff --git a/mupdf/nametree.c b/mupdf/nametree.c
index b338cbbb..2dd0d76d 100644
--- a/mupdf/nametree.c
+++ b/mupdf/nametree.c
@@ -178,6 +178,35 @@ pdf_loadnametree(pdf_nametree **pnt, pdf_xref *xref, char* key)
error = pdf_loadindirect(&catalog, xref, ref);
if (error) goto cleanup;
+#if 1 // XXX XXX
+ names = fz_dictgets(catalog, "Names");
+ if (!names)
+ {
+ nt = *pnt = fz_malloc(sizeof(pdf_nametree));
+ if (!nt) { error = fz_outofmem; goto cleanup; }
+ nt->cap = 0;
+ nt->len = 0;
+ nt->items = 0;
+ return nil;
+ }
+
+ error = pdf_resolve(&names, xref);
+ if (error) goto cleanup;
+
+ root = fz_dictgets(names, key);
+ if (!root)
+ {
+ nt = *pnt = fz_malloc(sizeof(pdf_nametree));
+ if (!nt) { error = fz_outofmem; goto cleanup; }
+ nt->cap = 0;
+ nt->len = 0;
+ nt->items = 0;
+ return nil;
+ }
+ error = pdf_resolve(&root, xref);
+ if (error) goto cleanup;
+
+#else
/*XXX create empty nametree instead of failing */
names = fz_dictgets(catalog, "Names");
/*XXX never resolve something that can be null */
@@ -188,6 +217,7 @@ pdf_loadnametree(pdf_nametree **pnt, pdf_xref *xref, char* key)
/*XXX never resolve something that can be null */
error = pdf_resolve(&root, xref);
if (error) goto cleanup;
+#endif
nt = *pnt = fz_malloc(sizeof(pdf_nametree));
if (!nt) { error = fz_outofmem; goto cleanup; }