Correctly handle empty input to AFPercent_Format().
Treat it like 0.
Change-Id: Ie9f8b34936448b2bf18f372bb72cef6bf6093bc3
Reviewed-on: https://pdfium-review.googlesource.com/c/51071
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Wei Li <weili@chromium.org>
diff --git a/fxjs/cjs_publicmethods.cpp b/fxjs/cjs_publicmethods.cpp
index 1811321..5f0fdfd 100644
--- a/fxjs/cjs_publicmethods.cpp
+++ b/fxjs/cjs_publicmethods.cpp
@@ -783,11 +783,6 @@
if (!pEvent->m_pValue)
return CJS_Result::Failure(JSMessage::kBadObjectError);
- WideString& Value = pEvent->Value();
- ByteString strValue = StrTrim(Value.ToDefANSI());
- if (strValue.IsEmpty())
- return CJS_Result::Success();
-
// Acrobat will accept this. Anything larger causes it to throw an error.
static constexpr int kMaxSepStyle = 49;
@@ -798,6 +793,11 @@
iSepStyle = ValidStyleOrZero(iSepStyle);
+ WideString& Value = pEvent->Value();
+ ByteString strValue = StrTrim(Value.ToDefANSI());
+ if (strValue.IsEmpty())
+ strValue = "0";
+
// for processing decimal places
double dValue = atof(strValue.c_str());
dValue *= 100;
diff --git a/testing/resources/javascript/public_methods_expected.txt b/testing/resources/javascript/public_methods_expected.txt
index 269d1da..6131da8 100644
--- a/testing/resources/javascript/public_methods_expected.txt
+++ b/testing/resources/javascript/public_methods_expected.txt
@@ -66,9 +66,9 @@
Alert: PASS: AFPercent_Format(1, 0, 0) = -512.3%
Alert: FAIL: AFPercent_Format(1, 0, 1) = -512.3%, expected %-512.3
Alert: FAIL: AFPercent_Format(1, 0, 2) = -512.3%, expected %-512.3
-Alert: FAIL: AFPercent_Format(10, 0, 0) = , expected 0.0000000000%
-Alert: FAIL: AFPercent_Format(10, 0, 1) = , expected %0.0000000000
-Alert: FAIL: AFPercent_Format(10, 0, 2) = , expected %0.0000000000
+Alert: PASS: AFPercent_Format(10, 0, 0) = 0.0000000000%
+Alert: FAIL: AFPercent_Format(10, 0, 1) = 0.0000000000%, expected %0.0000000000
+Alert: FAIL: AFPercent_Format(10, 0, 2) = 0.0000000000%, expected %0.0000000000
Alert: PASS: AFPercent_Format(-3, 0) threw AFPercent_Format: Incorrect parameter value.
Alert: PASS: AFPercent_Format(-3, 1) threw AFPercent_Format: Incorrect parameter value.
Alert: PASS: AFPercent_Format(-1, 3) threw AFPercent_Format: Incorrect parameter value.
@@ -76,26 +76,26 @@
Alert: PASS: AFPercent_Format(0, -1) threw AFPercent_Format: Incorrect parameter value.
Alert: PASS: AFPercent_Format(0, 50) threw AFPercent_Format: Incorrect parameter value.
Alert: PASS: AFPercent_Format(0, 51) threw AFPercent_Format: Incorrect parameter value.
-Alert: FAIL: AFPercent_Format(1, 0) = , expected 0.0%
-Alert: FAIL: AFPercent_Format(1, 1) = , expected 0.0%
-Alert: FAIL: AFPercent_Format(1, 2) = , expected 0,0%
-Alert: FAIL: AFPercent_Format(1, 3) = , expected 0,0%
-Alert: FAIL: AFPercent_Format(1, 4) = , expected 0.0%
-Alert: FAIL: AFPercent_Format(2, 0) = , expected 0.00%
-Alert: FAIL: AFPercent_Format(2, 1) = , expected 0.00%
-Alert: FAIL: AFPercent_Format(2, 2) = , expected 0,00%
-Alert: FAIL: AFPercent_Format(2, 3) = , expected 0,00%
-Alert: FAIL: AFPercent_Format(2, 4) = , expected 0.00%
-Alert: FAIL: AFPercent_Format(3, 0) = , expected 0.000%
-Alert: FAIL: AFPercent_Format(3, 1) = , expected 0.000%
-Alert: FAIL: AFPercent_Format(3, 2) = , expected 0,000%
-Alert: FAIL: AFPercent_Format(3, 3) = , expected 0,000%
-Alert: FAIL: AFPercent_Format(3, 4) = , expected 0.000%
-Alert: FAIL: AFPercent_Format(10, 0) = , expected 0.0000000000%
-Alert: FAIL: AFPercent_Format(10, 1) = , expected 0.0000000000%
-Alert: FAIL: AFPercent_Format(10, 2) = , expected 0,0000000000%
-Alert: FAIL: AFPercent_Format(10, 3) = , expected 0,0000000000%
-Alert: FAIL: AFPercent_Format(10, 4) = , expected 0.0000000000%
+Alert: PASS: AFPercent_Format(1, 0) = 0.0%
+Alert: PASS: AFPercent_Format(1, 1) = 0.0%
+Alert: PASS: AFPercent_Format(1, 2) = 0,0%
+Alert: PASS: AFPercent_Format(1, 3) = 0,0%
+Alert: PASS: AFPercent_Format(1, 4) = 0.0%
+Alert: PASS: AFPercent_Format(2, 0) = 0.00%
+Alert: PASS: AFPercent_Format(2, 1) = 0.00%
+Alert: PASS: AFPercent_Format(2, 2) = 0,00%
+Alert: PASS: AFPercent_Format(2, 3) = 0,00%
+Alert: PASS: AFPercent_Format(2, 4) = 0.00%
+Alert: PASS: AFPercent_Format(3, 0) = 0.000%
+Alert: PASS: AFPercent_Format(3, 1) = 0.000%
+Alert: PASS: AFPercent_Format(3, 2) = 0,000%
+Alert: PASS: AFPercent_Format(3, 3) = 0,000%
+Alert: PASS: AFPercent_Format(3, 4) = 0.000%
+Alert: PASS: AFPercent_Format(10, 0) = 0.0000000000%
+Alert: PASS: AFPercent_Format(10, 1) = 0.0000000000%
+Alert: PASS: AFPercent_Format(10, 2) = 0,0000000000%
+Alert: PASS: AFPercent_Format(10, 3) = 0,0000000000%
+Alert: PASS: AFPercent_Format(10, 4) = 0.0000000000%
Alert: PASS: AFPercent_Format(1, 0) = 0.0%
Alert: PASS: AFPercent_Format(1, 1) = 0.0%
Alert: PASS: AFPercent_Format(1, 2) = 0,0%