From e4e6160a6bd33f6b55938616e6143ea843c7e392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Tue, 15 Mar 2022 19:58:42 +0100 Subject: [PATCH] Call repairTrailer() after parse(), not before write() --- src/uPDFParser.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/uPDFParser.cpp b/src/uPDFParser.cpp index 0d48ecf..5813497 100644 --- a/src/uPDFParser.cpp +++ b/src/uPDFParser.cpp @@ -787,6 +787,8 @@ namespace uPDFParser } } + repairTrailer(); + // close(fd); } @@ -814,7 +816,7 @@ namespace uPDFParser static const char* keys[] = {"Root", "Info", "Encrypt", "ID"}; - for (int i=0; ihasKey(keys[i])) trailer.dictionary().addData(keys[i], (*xrefObject)[keys[i]]->clone()); @@ -884,8 +886,6 @@ namespace uPDFParser if (xrefOffset != (off_t)-1) trailer.dictionary().addData("Prev", new Integer((int)xrefOffset)); - repairTrailer(); - std::string trailerStr = trailer.dictionary().str(); ::write(newFd, "trailer\n", 8); ::write(newFd, trailerStr.c_str(), trailerStr.size()); @@ -968,8 +968,6 @@ namespace uPDFParser if (xrefStmOffset != 0) trailer.dictionary().addData("XRefStm", new Integer(xrefStmOffset)); - repairTrailer(); - std::string trailerStr = trailer.dictionary().str(); ::write(newFd, "trailer\n", 8); ::write(newFd, trailerStr.c_str(), trailerStr.size());