From 45e0c1c2ef1df9a09d64753600b80cb2c35ec4b8 Mon Sep 17 00:00:00 2001
From: "Sven M. Hallberg" <pesco@khjk.org>
Date: Sat, 8 Feb 2020 16:05:55 +0100
Subject: [PATCH] use the correct index variable when iterating over xref
 subsections

---
 pdf.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/pdf.c b/pdf.c
index f15bc6c..2e5e321 100644
--- a/pdf.c
+++ b/pdf.c
@@ -657,15 +657,18 @@ init_parser(struct Env *aux)
 XREntry *
 lookup_xref(struct Env *aux, size_t nr, size_t gen)
 {
+	HParsedToken *ss;	/* xref subsection */
+	size_t base, n;
+
 	/* for each cross-reference section (i.e. update) */
 	for (size_t i = 0; i < aux->nxrefs; i++) {
 		HCountedArray *subs = H_INDEX_SEQ(aux->xrefs[i], 0);
 
 		/* for each cross-reference subsection */
 		for (size_t j = 0; j < subs->used; j++) {
-			HParsedToken *ss = subs->elements[i];
-			size_t base = H_INDEX_UINT(ss, 0, 0);
-			size_t n = H_INDEX_UINT(ss, 0, 1);
+			ss = subs->elements[j];
+			base = H_INDEX_UINT(ss, 0, 0);
+			n = H_INDEX_UINT(ss, 0, 1);
 
 			if (nr >= base && nr - base < n)
 				return H_INDEX(XREntry, ss, 1, nr - base);
@@ -1434,6 +1437,7 @@ parse_xrefs(const uint8_t *input, size_t sz, size_t *nxrefs)
 			    "position %zu (%#zx)\n", infile, offset, offset);
 			break;
 		}
+		assert(res->ast != NULL);
 
 		/* save this section in xrefs */
 		if (n >= SIZE_MAX / sizeof(HParsedToken *))
-- 
GitLab