summaryrefslogtreecommitdiff
path: root/Build/source/texk/dvipdfm-x/xsrc/pdfnames.c
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/dvipdfm-x/xsrc/pdfnames.c')
-rw-r--r--Build/source/texk/dvipdfm-x/xsrc/pdfnames.c45
1 files changed, 38 insertions, 7 deletions
diff --git a/Build/source/texk/dvipdfm-x/xsrc/pdfnames.c b/Build/source/texk/dvipdfm-x/xsrc/pdfnames.c
index 1aa9d1096dd..c898dedfb31 100644
--- a/Build/source/texk/dvipdfm-x/xsrc/pdfnames.c
+++ b/Build/source/texk/dvipdfm-x/xsrc/pdfnames.c
@@ -74,6 +74,7 @@ printable_key (const char *key, int keylen)
return (char *) pkey;
}
+#ifdef XETEX
static void
flush_objects (struct ht_table *ht_tab)
{
@@ -104,6 +105,7 @@ flush_objects (struct ht_table *ht_tab)
ht_clear_iter(&iter);
}
}
+#endif
static void CDECL
hval_free (void *hval)
@@ -136,6 +138,32 @@ pdf_new_name_tree (void)
return names;
}
+#ifndef XETEX
+static void
+check_objects_defined (struct ht_table *ht_tab)
+{
+ struct ht_iter iter;
+
+ if (ht_set_iter(ht_tab, &iter) >= 0) {
+ do {
+ char *key;
+ int keylen;
+ struct obj_data *value;
+
+ key = ht_iter_getkey(&iter, &keylen);
+ value = ht_iter_getval(&iter);
+ ASSERT(value->object);
+ if (PDF_OBJ_UNDEFINED(value->object)) {
+ pdf_names_add_object(ht_tab, key, keylen, pdf_new_null());
+ WARN("Object @%s used, but not defined. Replaced by null.",
+ printable_key(key, keylen));
+ }
+ } while (ht_iter_next(&iter) >= 0);
+ ht_clear_iter(&iter);
+ }
+}
+#endif
+
void
pdf_delete_name_tree (struct ht_table **names)
{
@@ -189,6 +217,7 @@ pdf_names_add_object (struct ht_table *names,
return 0;
}
+#ifdef XETEX
int
pdf_names_add_reference (struct ht_table *names,
const void *key, int keylen, pdf_obj *object_ref)
@@ -225,6 +254,7 @@ pdf_names_add_reference (struct ht_table *names,
return 0;
}
+#endif
/*
* The following routine returns copies, not the original object.
@@ -415,7 +445,8 @@ build_name_tree (struct named_object *first, long num_leaves, int is_root)
}
static struct named_object *
-flat_table (struct ht_table *ht_tab, long *num_entries)
+flat_table (struct ht_table *ht_tab, long *num_entries,
+ struct ht_table *filter)
{
struct named_object *objects;
struct ht_iter iter;
@@ -465,21 +496,21 @@ flat_table (struct ht_table *ht_tab, long *num_entries)
}
pdf_obj *
-pdf_names_create_tree (struct ht_table *names)
+pdf_names_create_tree (struct ht_table *names, long *count,
+ struct ht_table *filter)
{
pdf_obj *name_tree;
struct named_object *flat;
- long count;
- flat = flat_table(names, &count);
+ flat = flat_table(names, count, filter);
if (!flat)
name_tree = NULL;
else {
- if (count < 1)
+ if (*count < 1)
name_tree = NULL;
else {
- qsort(flat, count, sizeof(struct named_object), cmp_key);
- name_tree = build_name_tree(flat, count, 1);
+ qsort(flat, *count, sizeof(struct named_object), cmp_key);
+ name_tree = build_name_tree(flat, *count, 1);
}
RELEASE(flat);
}