mirror of
https://github.com/qpdf/qpdf.git
synced 2024-12-22 10:58:58 +00:00
Move QPDF::resolveXRefTable to QPDF::Xref_table
This commit is contained in:
parent
ad4688866d
commit
3ddc51a9dc
@ -759,7 +759,6 @@ class QPDF
|
||||
|
||||
void parse(char const* password);
|
||||
void inParse(bool);
|
||||
bool resolveXRefTable();
|
||||
void setLastObjectDescription(std::string const& description, QPDFObjGen const& og);
|
||||
QPDFObjectHandle readTrailer();
|
||||
QPDFObjectHandle readObject(std::string const& description, QPDFObjGen og);
|
||||
|
@ -1385,13 +1385,13 @@ QPDF::Xref_table::show()
|
||||
// Resolve all objects in the xref table. If this triggers a xref table reconstruction abort and
|
||||
// return false. Otherwise return true.
|
||||
bool
|
||||
QPDF::resolveXRefTable()
|
||||
QPDF::Xref_table::resolve()
|
||||
{
|
||||
bool may_change = !m->xref_table.reconstructed;
|
||||
for (auto& iter: m->xref_table) {
|
||||
if (isUnresolved(iter.first)) {
|
||||
resolve(iter.first);
|
||||
if (may_change && m->xref_table.reconstructed) {
|
||||
bool may_change = !reconstructed;
|
||||
for (auto& iter: *this) {
|
||||
if (qpdf.isUnresolved(iter.first)) {
|
||||
qpdf.resolve(iter.first);
|
||||
if (may_change && reconstructed) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -1407,9 +1407,9 @@ QPDF::fixDanglingReferences(bool force)
|
||||
if (m->fixed_dangling_refs) {
|
||||
return;
|
||||
}
|
||||
if (!resolveXRefTable()) {
|
||||
if (!m->xref_table.resolve()) {
|
||||
QTC::TC("qpdf", "QPDF fix dangling triggered xref reconstruction");
|
||||
resolveXRefTable();
|
||||
m->xref_table.resolve();
|
||||
}
|
||||
m->fixed_dangling_refs = true;
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ class QPDF::Xref_table: public std::map<QPDFObjGen, QPDFXRefEntry>
|
||||
void initialize();
|
||||
void reconstruct(QPDFExc& e);
|
||||
void show();
|
||||
bool resolve();
|
||||
|
||||
QPDFObjectHandle trailer;
|
||||
bool reconstructed{false};
|
||||
|
Loading…
Reference in New Issue
Block a user