mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 19:08:59 +00:00
In QPDFWriter change object_stream_to_objects to a map of vectors.
This commit is contained in:
parent
2fa93e79b4
commit
47cf4e3a50
@ -2179,12 +2179,14 @@ QPDFWriter::doWriteSetup()
|
|||||||
// Generate reverse mapping from object stream to objects
|
// Generate reverse mapping from object stream to objects
|
||||||
m->obj.forEach([this](auto id, auto const& item) -> void {
|
m->obj.forEach([this](auto id, auto const& item) -> void {
|
||||||
if (item.object_stream > 0) {
|
if (item.object_stream > 0) {
|
||||||
m->object_stream_to_objects[item.object_stream].insert(QPDFObjGen(id, item.gen));
|
auto& vec = m->object_stream_to_objects[item.object_stream];
|
||||||
m->max_ostream_index = std::max(
|
vec.emplace_back(id, item.gen);
|
||||||
m->max_ostream_index,
|
if (m->max_ostream_index < vec.size()) {
|
||||||
QIntC::to_int(m->object_stream_to_objects[item.object_stream].size()) - 1);
|
++m->max_ostream_index;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
--m->max_ostream_index;
|
||||||
|
|
||||||
if (m->object_stream_to_objects.empty()) {
|
if (m->object_stream_to_objects.empty()) {
|
||||||
m->obj.streams_empty = true;
|
m->obj.streams_empty = true;
|
||||||
@ -2431,7 +2433,7 @@ QPDFWriter::writeXRefStream(
|
|||||||
unsigned int f1_size = std::max(bytesNeeded(max_offset + hint_length), bytesNeeded(max_id));
|
unsigned int f1_size = std::max(bytesNeeded(max_offset + hint_length), bytesNeeded(max_id));
|
||||||
|
|
||||||
// field 2 contains object stream indices
|
// field 2 contains object stream indices
|
||||||
unsigned int f2_size = bytesNeeded(m->max_ostream_index);
|
unsigned int f2_size = bytesNeeded(QIntC::to_longlong(m->max_ostream_index));
|
||||||
|
|
||||||
unsigned int esize = 1 + f1_size + f2_size;
|
unsigned int esize = 1 + f1_size + f2_size;
|
||||||
|
|
||||||
|
@ -97,11 +97,11 @@ class QPDFWriter::Members
|
|||||||
int cur_stream_length_id{0};
|
int cur_stream_length_id{0};
|
||||||
size_t cur_stream_length{0};
|
size_t cur_stream_length{0};
|
||||||
bool added_newline{false};
|
bool added_newline{false};
|
||||||
int max_ostream_index{0};
|
size_t max_ostream_index{0};
|
||||||
std::set<QPDFObjGen> normalized_streams;
|
std::set<QPDFObjGen> normalized_streams;
|
||||||
std::map<QPDFObjGen, int> page_object_to_seq;
|
std::map<QPDFObjGen, int> page_object_to_seq;
|
||||||
std::map<QPDFObjGen, int> contents_to_page_seq;
|
std::map<QPDFObjGen, int> contents_to_page_seq;
|
||||||
std::map<int, std::set<QPDFObjGen>> object_stream_to_objects;
|
std::map<int, std::vector<QPDFObjGen>> object_stream_to_objects;
|
||||||
std::list<Pipeline*> pipeline_stack;
|
std::list<Pipeline*> pipeline_stack;
|
||||||
unsigned long long next_stack_id{0};
|
unsigned long long next_stack_id{0};
|
||||||
bool deterministic_id{false};
|
bool deterministic_id{false};
|
||||||
|
Loading…
Reference in New Issue
Block a user