Commit 481b1aeb5008fcd742710ab1caa98def6c0dbf84

Authored by Jay Berkenbilt
1 parent f12539e8

Add comments after merge of last pull request

Showing 1 changed file with 7 additions and 2 deletions
libqpdf/QPDF_optimization.cc
@@ -142,7 +142,9 @@ QPDF::pushInheritedAttributesToPage(bool allow_changes, bool warn_skipped_keys) @@ -142,7 +142,9 @@ QPDF::pushInheritedAttributesToPage(bool allow_changes, bool warn_skipped_keys)
142 return; 142 return;
143 } 143 }
144 144
145 - // Calling getAllPages() resolves any duplicated page objects. 145 + // Calling getAllPages() resolves any duplicated page objects,
  146 + // repairs broken nodes, and detects loops, so we don't have to do
  147 + // those activities here.
146 getAllPages(); 148 getAllPages();
147 149
148 // key_ancestors is a mapping of page attribute keys to a stack of 150 // key_ancestors is a mapping of page attribute keys to a stack of
@@ -234,7 +236,10 @@ QPDF::pushInheritedAttributesToPageInternal( @@ -234,7 +236,10 @@ QPDF::pushInheritedAttributesToPageInternal(
234 } 236 }
235 } 237 }
236 238
237 - // Process descendant nodes. 239 + // Process descendant nodes. This method does not perform loop
  240 + // detection because all code paths that lead here follow a call
  241 + // to getAllPages, which already throws an exception in the event
  242 + // of a loop in the pages tree.
238 for (auto& kid: cur_pages.getKey("/Kids").aitems()) { 243 for (auto& kid: cur_pages.getKey("/Kids").aitems()) {
239 if (kid.isDictionaryOfType("/Pages")) { 244 if (kid.isDictionaryOfType("/Pages")) {
240 pushInheritedAttributesToPageInternal( 245 pushInheritedAttributesToPageInternal(