From b71cef856bf666824523bed445cffdbdd0871e0f Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 18 Apr 2010 23:19:54 +0000 Subject: [PATCH] fix linearization padding bug for second xref stream as well as first, which was previously fixed --- ChangeLog | 11 +++++++++++ libqpdf/QPDFWriter.cc | 10 ++++------ qpdf/qtest/qpdf/c-linearized.pdf | Bin 10490 -> 0 bytes qpdf/qtest/qpdf/lin-special.generate.exp | Bin 2831 -> 0 bytes qpdf/qtest/qpdf/object-stream.generate.exp | Bin 1560 -> 0 bytes qpdf/qtest/qpdf/object-stream.preserve.exp | Bin 1560 -> 0 bytes 6 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5397e59..66d9541 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-04-18 Jay Berkenbilt + + * 2.1.4: release + + * libqpdf/QPDFWriter.cc (writeLinearized): the padding calculation + fix in 2.1.2 was applied in only one place but it was needed in + two places since there are actually two cross reference streams in + a linearized file. The new padding calculation is now used for + both streams. Hopefully this should put an end to linearization + padding problems. (Fixes qpdf-Bugs-2979219.) + 2010-04-10 Jay Berkenbilt * qpdf/qpdf.cc (main): Since qpdf --check only checks syntax and diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 786d4e8..8468459 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -2145,18 +2145,16 @@ QPDFWriter::writeLinearized() writeXRefStream(second_half_xref, second_half_end, second_xref_offset, t_lin_second, 0, second_half_end, - second_trailer_size/*, - 0, 0, 0, 0, (pass == 1)*/); -/// int endpos = this->pipeline->getCount(); + second_trailer_size, + 0, 0, 0, 0, (pass == 1)); + int endpos = this->pipeline->getCount(); if (pass == 1) { // Pad so we have enough room for the real xref // stream. See comments for previous xref stream on // how we calculate the padding. - -/// writePad(calculateXrefStreamPadding(endpos - pos)); - writePad(99); + writePad(calculateXrefStreamPadding(endpos - pos)); writeString("\n"); second_xref_end = this->pipeline->getCount(); } diff --git a/qpdf/qtest/qpdf/c-linearized.pdf b/qpdf/qtest/qpdf/c-linearized.pdf index 42f3cf2..0768023 100644 Binary files a/qpdf/qtest/qpdf/c-linearized.pdf and b/qpdf/qtest/qpdf/c-linearized.pdf differ diff --git a/qpdf/qtest/qpdf/lin-special.generate.exp b/qpdf/qtest/qpdf/lin-special.generate.exp index 2ffbe91..ad3df5f 100644 Binary files a/qpdf/qtest/qpdf/lin-special.generate.exp and b/qpdf/qtest/qpdf/lin-special.generate.exp differ diff --git a/qpdf/qtest/qpdf/object-stream.generate.exp b/qpdf/qtest/qpdf/object-stream.generate.exp index d5fa82a..66618d2 100644 Binary files a/qpdf/qtest/qpdf/object-stream.generate.exp and b/qpdf/qtest/qpdf/object-stream.generate.exp differ diff --git a/qpdf/qtest/qpdf/object-stream.preserve.exp b/qpdf/qtest/qpdf/object-stream.preserve.exp index d5fa82a..66618d2 100644 Binary files a/qpdf/qtest/qpdf/object-stream.preserve.exp and b/qpdf/qtest/qpdf/object-stream.preserve.exp differ -- libgit2 0.21.4