Commit aefb8ff9efe06b6a596fac8140daea605ff149ff

Authored by m-holger
Committed by Jay Berkenbilt
1 parent 8363657c

Refactor QPDFWriter::writePad

include/qpdf/QPDFWriter.hh
@@ -557,7 +557,7 @@ class QPDFWriter @@ -557,7 +557,7 @@ class QPDFWriter
557 void writeBuffer(std::shared_ptr<Buffer>&); 557 void writeBuffer(std::shared_ptr<Buffer>&);
558 void writeStringQDF(std::string const& str); 558 void writeStringQDF(std::string const& str);
559 void writeStringNoQDF(std::string const& str); 559 void writeStringNoQDF(std::string const& str);
560 - void writePad(int nspaces); 560 + void writePad(size_t nspaces);
561 void assignCompressedObjectNumbers(QPDFObjGen const& og); 561 void assignCompressedObjectNumbers(QPDFObjGen const& og);
562 void enqueueObject(QPDFObjectHandle object); 562 void enqueueObject(QPDFObjectHandle object);
563 void writeObjectStreamOffsets( 563 void writeObjectStreamOffsets(
@@ -676,7 +676,7 @@ class QPDFWriter @@ -676,7 +676,7 @@ class QPDFWriter
676 qpdf_offset_t hint_length, 676 qpdf_offset_t hint_length,
677 bool skip_compression, 677 bool skip_compression,
678 int linearization_pass); 678 int linearization_pass);
679 - int calculateXrefStreamPadding(qpdf_offset_t xref_bytes); 679 + size_t calculateXrefStreamPadding(qpdf_offset_t xref_bytes);
680 680
681 // When filtering subsections, push additional pipelines to the 681 // When filtering subsections, push additional pipelines to the
682 // stack. When ready to switch, activate the pipeline stack. When 682 // stack. When ready to switch, activate the pipeline stack. When
libqpdf/QPDFWriter.cc
@@ -1010,11 +1010,9 @@ QPDFWriter::writeStringNoQDF(std::string const&amp; str) @@ -1010,11 +1010,9 @@ QPDFWriter::writeStringNoQDF(std::string const&amp; str)
1010 } 1010 }
1011 1011
1012 void 1012 void
1013 -QPDFWriter::writePad(int nspaces) 1013 +QPDFWriter::writePad(size_t nspaces)
1014 { 1014 {
1015 - for (int i = 0; i < nspaces; ++i) {  
1016 - writeString(" ");  
1017 - } 1015 + writeString(std::string(nspaces, ' '));
1018 } 1016 }
1019 1017
1020 Pipeline* 1018 Pipeline*
@@ -1321,13 +1319,8 @@ QPDFWriter::writeTrailer( @@ -1321,13 +1319,8 @@ QPDFWriter::writeTrailer(
1321 writeString(" /Prev "); 1319 writeString(" /Prev ");
1322 qpdf_offset_t pos = this->m->pipeline->getCount(); 1320 qpdf_offset_t pos = this->m->pipeline->getCount();
1323 writeString(std::to_string(prev)); 1321 writeString(std::to_string(prev));
1324 - int nspaces =  
1325 - QIntC::to_int(pos - this->m->pipeline->getCount() + 21);  
1326 - if (nspaces < 0) {  
1327 - throw std::logic_error(  
1328 - "QPDFWriter: no padding required in trailer");  
1329 - }  
1330 - writePad(nspaces); 1322 + writePad(QIntC::to_size(
  1323 + pos - this->m->pipeline->getCount() + 21));
1331 } 1324 }
1332 } else { 1325 } else {
1333 unparseChild(trailer.getKey(key), 1, 0); 1326 unparseChild(trailer.getKey(key), 1, 0);
@@ -2783,7 +2776,7 @@ QPDFWriter::writeXRefStream( @@ -2783,7 +2776,7 @@ QPDFWriter::writeXRefStream(
2783 return space_before_zero; 2776 return space_before_zero;
2784 } 2777 }
2785 2778
2786 -int 2779 +size_t
2787 QPDFWriter::calculateXrefStreamPadding(qpdf_offset_t xref_bytes) 2780 QPDFWriter::calculateXrefStreamPadding(qpdf_offset_t xref_bytes)
2788 { 2781 {
2789 // This routine is called right after a linearization first pass 2782 // This routine is called right after a linearization first pass
@@ -2794,7 +2787,7 @@ QPDFWriter::calculateXrefStreamPadding(qpdf_offset_t xref_bytes) @@ -2794,7 +2787,7 @@ QPDFWriter::calculateXrefStreamPadding(qpdf_offset_t xref_bytes)
2794 // input by 6 bytes plus 5 bytes per 16K, and then we'll add 10 2787 // input by 6 bytes plus 5 bytes per 16K, and then we'll add 10
2795 // extra bytes for number length increases. 2788 // extra bytes for number length increases.
2796 2789
2797 - return QIntC::to_int(16 + (5 * ((xref_bytes + 16383) / 16384))); 2790 + return QIntC::to_size(16 + (5 * ((xref_bytes + 16383) / 16384)));
2798 } 2791 }
2799 2792
2800 void 2793 void
@@ -3029,9 +3022,7 @@ QPDFWriter::writeLinearized() @@ -3029,9 +3022,7 @@ QPDFWriter::writeLinearized()
3029 writeString(" >>"); 3022 writeString(" >>");
3030 closeObject(lindict_id); 3023 closeObject(lindict_id);
3031 static int const pad = 200; 3024 static int const pad = 200;
3032 - int spaces = QIntC::to_int(pos - this->m->pipeline->getCount() + pad);  
3033 - qpdf_assert_debug(spaces >= 0);  
3034 - writePad(spaces); 3025 + writePad(QIntC::to_size(pos - this->m->pipeline->getCount() + pad));
3035 writeString("\n"); 3026 writeString("\n");
3036 3027
3037 // If the user supplied any additional header text, write it 3028 // If the user supplied any additional header text, write it
@@ -3082,7 +3073,7 @@ QPDFWriter::writeLinearized() @@ -3082,7 +3073,7 @@ QPDFWriter::writeLinearized()
3082 } else { 3073 } else {
3083 // Pad so that the next object starts at the same 3074 // Pad so that the next object starts at the same
3084 // place as in pass 1. 3075 // place as in pass 1.
3085 - writePad(QIntC::to_int(first_xref_end - endpos)); 3076 + writePad(QIntC::to_size(first_xref_end - endpos));
3086 3077
3087 if (this->m->pipeline->getCount() != first_xref_end) { 3078 if (this->m->pipeline->getCount() != first_xref_end) {
3088 throw std::logic_error( 3079 throw std::logic_error(
@@ -3164,7 +3155,7 @@ QPDFWriter::writeLinearized() @@ -3164,7 +3155,7 @@ QPDFWriter::writeLinearized()
3164 second_xref_end = this->m->pipeline->getCount(); 3155 second_xref_end = this->m->pipeline->getCount();
3165 } else { 3156 } else {
3166 // Make the file size the same. 3157 // Make the file size the same.
3167 - writePad(QIntC::to_int( 3158 + writePad(QIntC::to_size(
3168 second_xref_end + hint_length - 1 - 3159 second_xref_end + hint_length - 1 -
3169 this->m->pipeline->getCount())); 3160 this->m->pipeline->getCount()));
3170 writeString("\n"); 3161 writeString("\n");