Commit 781c313058e26b6ab6fda060a652a395d27cdb7a

Authored by Jay Berkenbilt
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.
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__
... ...