mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Write offsets as unsigned in linearization hint tables (fixes #1023)
This commit is contained in:
parent
9fc02e2f91
commit
71566a2761
@ -1,5 +1,8 @@
|
||||
2023-10-14 Jay Berkenbilt <ejb@ql.org>
|
||||
|
||||
* Tweak linearization code to better handle files between 2 GB and
|
||||
4 GB in size. Fixes #1023.
|
||||
|
||||
* Fix serious bug: qpdf could discard a the character after an
|
||||
escaped octal string. For content, this would only happen with QDF
|
||||
or when normalizing content, but it could have happened in a
|
||||
|
@ -1437,6 +1437,12 @@ class QPDF
|
||||
{
|
||||
return QIntC::to_int(i);
|
||||
}
|
||||
template <typename T>
|
||||
static unsigned long long
|
||||
toULL(T const& i)
|
||||
{
|
||||
return QIntC::to_ulonglong(i);
|
||||
}
|
||||
|
||||
class Members
|
||||
{
|
||||
|
@ -1670,11 +1670,11 @@ QPDF::writeHPageOffset(BitWriter& w)
|
||||
HPageOffset& t = m->page_offset_hints;
|
||||
|
||||
w.writeBitsInt(t.min_nobjects, 32); // 1
|
||||
w.writeBitsInt(toI(t.first_page_offset), 32); // 2
|
||||
w.writeBits(toULL(t.first_page_offset), 32); // 2
|
||||
w.writeBitsInt(t.nbits_delta_nobjects, 16); // 3
|
||||
w.writeBitsInt(t.min_page_length, 32); // 4
|
||||
w.writeBitsInt(t.nbits_delta_page_length, 16); // 5
|
||||
w.writeBitsInt(t.min_content_offset, 32); // 6
|
||||
w.writeBits(toULL(t.min_content_offset), 32); // 6
|
||||
w.writeBitsInt(t.nbits_delta_content_offset, 16); // 7
|
||||
w.writeBitsInt(t.min_content_length, 32); // 8
|
||||
w.writeBitsInt(t.nbits_delta_content_length, 16); // 9
|
||||
@ -1717,7 +1717,7 @@ QPDF::writeHSharedObject(BitWriter& w)
|
||||
HSharedObject& t = m->shared_object_hints;
|
||||
|
||||
w.writeBitsInt(t.first_shared_obj, 32); // 1
|
||||
w.writeBitsInt(toI(t.first_shared_offset), 32); // 2
|
||||
w.writeBits(toULL(t.first_shared_offset), 32); // 2
|
||||
w.writeBitsInt(t.nshared_first_page, 32); // 3
|
||||
w.writeBitsInt(t.nshared_total, 32); // 4
|
||||
w.writeBitsInt(t.nbits_nobjects, 16); // 5
|
||||
@ -1749,7 +1749,7 @@ void
|
||||
QPDF::writeHGeneric(BitWriter& w, HGeneric& t)
|
||||
{
|
||||
w.writeBitsInt(t.first_object, 32); // 1
|
||||
w.writeBitsInt(toI(t.first_object_offset), 32); // 2
|
||||
w.writeBits(toULL(t.first_object_offset), 32); // 2
|
||||
w.writeBitsInt(t.nobjects, 32); // 3
|
||||
w.writeBitsInt(t.group_length, 32); // 4
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user