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