aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2010-04-19 01:19:54 +0200
committerJay Berkenbilt <ejb@ql.org>2010-04-19 01:19:54 +0200
commitb71cef856bf666824523bed445cffdbdd0871e0f (patch)
tree80ede86b840563eddadf07df2b363eacb8ed8b07
parent84353451a33171b587c0bdeaae745dbc0e553fff (diff)
downloadqpdf-b71cef856bf666824523bed445cffdbdd0871e0f.tar.zst
fix linearization padding bug for second xref stream as well as first, which was previously fixed
git-svn-id: svn+q:///qpdf/trunk@957 71b93d88-0707-0410-a8cf-f5a4172ac649
-rw-r--r--ChangeLog11
-rw-r--r--libqpdf/QPDFWriter.cc10
-rw-r--r--qpdf/qtest/qpdf/c-linearized.pdfbin10490 -> 10668 bytes
-rw-r--r--qpdf/qtest/qpdf/lin-special.generate.expbin2831 -> 2772 bytes
-rw-r--r--qpdf/qtest/qpdf/object-stream.generate.expbin1560 -> 1476 bytes
-rw-r--r--qpdf/qtest/qpdf/object-stream.preserve.expbin1560 -> 1476 bytes
6 files changed, 15 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 5397e595..66d9541e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2010-04-18 Jay Berkenbilt <ejb@ql.org>
+
+ * 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 <ejb@ql.org>
* qpdf/qpdf.cc (main): Since qpdf --check only checks syntax and
diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc
index 786d4e8c..8468459c 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 42f3cf24..0768023a 100644
--- a/qpdf/qtest/qpdf/c-linearized.pdf
+++ b/qpdf/qtest/qpdf/c-linearized.pdf
Binary files differ
diff --git a/qpdf/qtest/qpdf/lin-special.generate.exp b/qpdf/qtest/qpdf/lin-special.generate.exp
index 2ffbe913..ad3df5ff 100644
--- a/qpdf/qtest/qpdf/lin-special.generate.exp
+++ b/qpdf/qtest/qpdf/lin-special.generate.exp
Binary files differ
diff --git a/qpdf/qtest/qpdf/object-stream.generate.exp b/qpdf/qtest/qpdf/object-stream.generate.exp
index d5fa82aa..66618d2d 100644
--- a/qpdf/qtest/qpdf/object-stream.generate.exp
+++ b/qpdf/qtest/qpdf/object-stream.generate.exp
Binary files differ
diff --git a/qpdf/qtest/qpdf/object-stream.preserve.exp b/qpdf/qtest/qpdf/object-stream.preserve.exp
index d5fa82aa..66618d2d 100644
--- a/qpdf/qtest/qpdf/object-stream.preserve.exp
+++ b/qpdf/qtest/qpdf/object-stream.preserve.exp
Binary files differ