Commit 781c313058e26b6ab6fda060a652a395d27cdb7a
1 parent
4ef95dbd
Change QPDF_Integer from int to long long
This makes it possible to store offsets that are larger than 2 GB in the trailer dictionary.
Showing
7 changed files
with
16 additions
and
15 deletions
include/qpdf/QPDF.hh
| ... | ... | @@ -529,8 +529,8 @@ class QPDF |
| 529 | 529 | void setTrailer(QPDFObjectHandle obj); |
| 530 | 530 | void read_xref(qpdf_offset_t offset); |
| 531 | 531 | void reconstruct_xref(QPDFExc& e); |
| 532 | - int read_xrefTable(qpdf_offset_t offset); | |
| 533 | - int read_xrefStream(qpdf_offset_t offset); | |
| 532 | + qpdf_offset_t read_xrefTable(qpdf_offset_t offset); | |
| 533 | + qpdf_offset_t read_xrefStream(qpdf_offset_t offset); | |
| 534 | 534 | int processXRefStream(qpdf_offset_t offset, QPDFObjectHandle& xref_stream); |
| 535 | 535 | void insertXrefEntry(int obj, int f0, int f1, int f2, |
| 536 | 536 | bool overwrite = false); | ... | ... |
include/qpdf/QPDFObjectHandle.hh
| ... | ... | @@ -98,7 +98,7 @@ class QPDFObjectHandle |
| 98 | 98 | QPDF_DLL |
| 99 | 99 | static QPDFObjectHandle newBool(bool value); |
| 100 | 100 | QPDF_DLL |
| 101 | - static QPDFObjectHandle newInteger(int value); | |
| 101 | + static QPDFObjectHandle newInteger(long long value); | |
| 102 | 102 | QPDF_DLL |
| 103 | 103 | static QPDFObjectHandle newReal(std::string const& value); |
| 104 | 104 | QPDF_DLL |
| ... | ... | @@ -150,7 +150,7 @@ class QPDFObjectHandle |
| 150 | 150 | |
| 151 | 151 | // Methods for integer objects |
| 152 | 152 | QPDF_DLL |
| 153 | - int getIntValue(); | |
| 153 | + long long getIntValue(); | |
| 154 | 154 | |
| 155 | 155 | // Methods for real objects |
| 156 | 156 | QPDF_DLL | ... | ... |
libqpdf/QPDF.cc
| ... | ... | @@ -659,7 +659,7 @@ QPDF::read_xref(qpdf_offset_t xref_offset) |
| 659 | 659 | this->deleted_objects.clear(); |
| 660 | 660 | } |
| 661 | 661 | |
| 662 | -int | |
| 662 | +qpdf_offset_t | |
| 663 | 663 | QPDF::read_xrefTable(qpdf_offset_t xref_offset) |
| 664 | 664 | { |
| 665 | 665 | PCRE xref_first_re("^\\s*(\\d+)\\s+(\\d+)"); |
| ... | ... | @@ -816,7 +816,7 @@ QPDF::read_xrefTable(qpdf_offset_t xref_offset) |
| 816 | 816 | return xref_offset; |
| 817 | 817 | } |
| 818 | 818 | |
| 819 | -int | |
| 819 | +qpdf_offset_t | |
| 820 | 820 | QPDF::read_xrefStream(qpdf_offset_t xref_offset) |
| 821 | 821 | { |
| 822 | 822 | bool found = false; |
| ... | ... | @@ -1247,7 +1247,7 @@ QPDF::readObjectInternal(PointerHolder<InputSource> input, |
| 1247 | 1247 | |
| 1248 | 1248 | case QPDFTokenizer::tt_integer: |
| 1249 | 1249 | object = QPDFObjectHandle::newInteger( |
| 1250 | - atoi(token.getValue().c_str())); | |
| 1250 | + QUtil::string_to_ll(token.getValue().c_str())); | |
| 1251 | 1251 | break; |
| 1252 | 1252 | |
| 1253 | 1253 | case QPDFTokenizer::tt_real: |
| ... | ... | @@ -1892,7 +1892,7 @@ QPDF::resolveObjectsInStream(int obj_stream_number) |
| 1892 | 1892 | } |
| 1893 | 1893 | |
| 1894 | 1894 | int num = atoi(tnum.getValue().c_str()); |
| 1895 | - int offset = atoi(toffset.getValue().c_str()); | |
| 1895 | + int offset = QUtil::string_to_ll(toffset.getValue().c_str()); | |
| 1896 | 1896 | offsets[num] = offset + first; |
| 1897 | 1897 | } |
| 1898 | 1898 | ... | ... |
libqpdf/QPDFObjectHandle.cc
| ... | ... | @@ -189,7 +189,7 @@ QPDFObjectHandle::getBoolValue() |
| 189 | 189 | |
| 190 | 190 | // Integer accessors |
| 191 | 191 | |
| 192 | -int | |
| 192 | +long long | |
| 193 | 193 | QPDFObjectHandle::getIntValue() |
| 194 | 194 | { |
| 195 | 195 | assertType("Integer", isInteger()); |
| ... | ... | @@ -592,7 +592,7 @@ QPDFObjectHandle::newNull() |
| 592 | 592 | } |
| 593 | 593 | |
| 594 | 594 | QPDFObjectHandle |
| 595 | -QPDFObjectHandle::newInteger(int value) | |
| 595 | +QPDFObjectHandle::newInteger(long long value) | |
| 596 | 596 | { |
| 597 | 597 | return QPDFObjectHandle(new QPDF_Integer(value)); |
| 598 | 598 | } | ... | ... |
libqpdf/QPDFWriter.cc
| ... | ... | @@ -881,6 +881,7 @@ QPDFWriter::writeTrailer(trailer_e which, int size, bool xref_stream, int prev) |
| 881 | 881 | writeString(" /Prev "); |
| 882 | 882 | qpdf_offset_t pos = this->pipeline->getCount(); |
| 883 | 883 | writeString(QUtil::int_to_string(prev)); |
| 884 | + // XXX | |
| 884 | 885 | int nspaces = (int)(pos - this->pipeline->getCount() + 11); |
| 885 | 886 | assert(nspaces >= 0); |
| 886 | 887 | writePad(nspaces); | ... | ... |
libqpdf/QPDF_Integer.cc
| ... | ... | @@ -2,7 +2,7 @@ |
| 2 | 2 | |
| 3 | 3 | #include <qpdf/QUtil.hh> |
| 4 | 4 | |
| 5 | -QPDF_Integer::QPDF_Integer(int val) : | |
| 5 | +QPDF_Integer::QPDF_Integer(long long val) : | |
| 6 | 6 | val(val) |
| 7 | 7 | { |
| 8 | 8 | } |
| ... | ... | @@ -17,7 +17,7 @@ QPDF_Integer::unparse() |
| 17 | 17 | return QUtil::int_to_string(this->val); |
| 18 | 18 | } |
| 19 | 19 | |
| 20 | -int | |
| 20 | +long long | |
| 21 | 21 | QPDF_Integer::getVal() const |
| 22 | 22 | { |
| 23 | 23 | return this->val; | ... | ... |
libqpdf/qpdf/QPDF_Integer.hh
| ... | ... | @@ -6,13 +6,13 @@ |
| 6 | 6 | class QPDF_Integer: public QPDFObject |
| 7 | 7 | { |
| 8 | 8 | public: |
| 9 | - QPDF_Integer(int val); | |
| 9 | + QPDF_Integer(long long val); | |
| 10 | 10 | virtual ~QPDF_Integer(); |
| 11 | 11 | virtual std::string unparse(); |
| 12 | - int getVal() const; | |
| 12 | + long long getVal() const; | |
| 13 | 13 | |
| 14 | 14 | private: |
| 15 | - int val; | |
| 15 | + long long val; | |
| 16 | 16 | }; |
| 17 | 17 | |
| 18 | 18 | #endif // __QPDF_INTEGER_HH__ | ... | ... |