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,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__