@libpdf/core 0.2.10 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -11,7 +11,7 @@ import { createCMSECDSASignature } from "pkijs";
11
11
  import { base64 } from "@scure/base";
12
12
 
13
13
  //#region package.json
14
- var version = "0.2.10";
14
+ var version = "0.2.11";
15
15
 
16
16
  //#endregion
17
17
  //#region src/objects/pdf-array.ts
@@ -29424,11 +29424,15 @@ var ObjectCopier = class {
29424
29424
  */
29425
29425
  getInheritedAttribute(page, key$1) {
29426
29426
  let current = page;
29427
+ const visited = /* @__PURE__ */ new Set();
29427
29428
  while (current) {
29428
29429
  const value = current.get(key$1);
29429
29430
  if (value) return value;
29430
29431
  const parentRef = current.getRef("Parent");
29431
29432
  if (!parentRef) break;
29433
+ const refKey$1 = `${parentRef.objectNumber}:${parentRef.generation}`;
29434
+ if (visited.has(refKey$1)) break;
29435
+ visited.add(refKey$1);
29432
29436
  const parent = this.source.getObject(parentRef);
29433
29437
  current = parent instanceof PdfDict ? parent : null;
29434
29438
  }
@@ -32950,11 +32954,14 @@ var XRefParser = class {
32950
32954
  const count = this.readIntegerFromCurrent();
32951
32955
  if (count === null) throw new XRefParseError("Expected subsection entry count");
32952
32956
  this.skipWhitespaceFromCurrent();
32953
- for (let i = 0; i < count; i++) {
32954
- const objNum = firstObjNum + i;
32955
- const entry = this.parseEntry();
32956
- entries.set(objNum, entry);
32957
- }
32957
+ const parsedEntries = [];
32958
+ for (let i = 0; i < count; i++) parsedEntries.push(this.parseEntry());
32959
+ let correctedFirstObjNum = firstObjNum;
32960
+ if (firstObjNum === 1 && parsedEntries.length > 0 && parsedEntries[0].type === "free" && parsedEntries[0].generation === 65535) {
32961
+ correctedFirstObjNum = 0;
32962
+ console.warn("XRef: corrected subsection start from 1 to 0 (free list head at wrong position)");
32963
+ }
32964
+ for (let i = 0; i < parsedEntries.length; i++) entries.set(correctedFirstObjNum + i, parsedEntries[i]);
32958
32965
  }
32959
32966
  /**
32960
32967
  * Parse a single xref entry.