aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authoryzrh <yzrh@noema.org>2022-12-29 02:49:05 +0000
committeryzrh <yzrh@noema.org>2022-12-29 03:00:11 +0000
commit988a751c15b43942b20ed437a15d6da6945aa883 (patch)
tree3e1d99fe4f456f12ac7206596096f934e0cd0466 /src
parent8083b30530a37d3529d453515465a00aac74a154 (diff)
downloadmelon-988a751c15b43942b20ed437a15d6da6945aa883.tar.gz
melon-988a751c15b43942b20ed437a15d6da6945aa883.tar.zst
Handle missing root object which is parent of others.
Signed-off-by: yzrh <yzrh@noema.org>
Diffstat (limited to 'src')
-rw-r--r--src/cnki_pdf.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/cnki_pdf.c b/src/cnki_pdf.c
index 887e5f4..502a0ce 100644
--- a/src/cnki_pdf.c
+++ b/src/cnki_pdf.c
@@ -309,7 +309,9 @@ cnki_pdf(cnki_t **param)
if (parent_missing[i] == 1)
root_kid++;
- if (root_kid <= 1) {
+ if (root_kid > 1) {
+ root = pdf_get_free_id(&pdf);
+ } else {
if (root_kid == 0) {
for (int i = 1; i <= parent[0]; i++)
if (root == 0 || root < parent[i])
@@ -323,15 +325,15 @@ cnki_pdf(cnki_t **param)
if ((*param)->stat > 0)
printf("Root object is %d.\n",
root);
- } else {
+ }
+
+ if (pdf_get_kid_count(&pdf, root) == 0) {
if ((*param)->stat > 0)
printf("Root object is missing\n");
if ((*param)->stat > 1)
printf("Generating root object\n");
- root = pdf_get_free_id(&pdf);
-
snprintf(buf, 64,
"<<\n/Type /Pages\n/Kids ");
strcat(dictionary, buf);
@@ -886,7 +888,7 @@ cnki_pdf_hn(cnki_t **param)
free(dictionary);
}
- dictionary_size = 64 + 128 * ptr->image_length;
+ dictionary_size = 128 + 128 * ptr->image_length;
dictionary = malloc(dictionary_size);
if (dictionary == NULL) {