Merge pull request #12720 from calixteman/fix_co

Be sure that CalculationOrder is either null or a non-empty array
This commit is contained in:
Tim van der Meij 2020-12-10 21:43:35 +01:00 committed by GitHub
commit 7097114e0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 13 additions and 2 deletions

View File

@ -1050,6 +1050,9 @@ class PDFDocument {
} }
const ids = calculationOrder.filter(isRef).map(ref => ref.toString()); const ids = calculationOrder.filter(isRef).map(ref => ref.toString());
if (ids.length === 0) {
return shadow(this, "calculationOrderIds", null);
}
return shadow(this, "calculationOrderIds", ids); return shadow(this, "calculationOrderIds", ids);
} }
} }

View File

@ -150,7 +150,7 @@ class EventDispatcher {
} }
calculateNow() { calculateNow() {
if (this._calculationOrder.length === 0) { if (!this._calculationOrder) {
return; return;
} }
const first = this._calculationOrder[0]; const first = this._calculationOrder[0];
@ -160,7 +160,7 @@ class EventDispatcher {
} }
runCalculate(source, event) { runCalculate(source, event) {
if (this._calculationOrder.length === 0) { if (!this._calculationOrder) {
return; return;
} }

View File

@ -187,6 +187,14 @@ describe("document", function () {
acroForm.set("CO", []); acroForm.set("CO", []);
pdfDocument = getDocument(acroForm); pdfDocument = getDocument(acroForm);
expect(pdfDocument.calculationOrderIds).toEqual(null); expect(pdfDocument.calculationOrderIds).toEqual(null);
acroForm.set("CO", ["1", "2"]);
pdfDocument = getDocument(acroForm);
expect(pdfDocument.calculationOrderIds).toEqual(null);
acroForm.set("CO", ["1", Ref.get(1, 0), "2"]);
pdfDocument = getDocument(acroForm);
expect(pdfDocument.calculationOrderIds).toEqual(["1R"]);
}); });
it("should get field objects array or null", async function () { it("should get field objects array or null", async function () {