Fix a crash in FXSYS_wcstof().

BUG=pdfium:1217

Change-Id: I3abf3b7cb2445de61e9e75ee08a2ac641f41c001
Reviewed-on: https://pdfium-review.googlesource.com/c/47912
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp
index a764307..8d76151 100644
--- a/core/fxcrt/fx_extension.cpp
+++ b/core/fxcrt/fx_extension.cpp
@@ -91,7 +91,8 @@
            -exp_value < std::numeric_limits<float>::min_exponent10) ||
           (!negative_exponent &&
            exp_value > std::numeric_limits<float>::max_exponent10)) {
-        *pUsedLen = 0;
+        if (pUsedLen)
+          *pUsedLen = 0;
         return 0.0f;
       }
 
diff --git a/core/fxcrt/fx_extension_unittest.cpp b/core/fxcrt/fx_extension_unittest.cpp
index 6b62856..11684c9 100644
--- a/core/fxcrt/fx_extension_unittest.cpp
+++ b/core/fxcrt/fx_extension_unittest.cpp
@@ -126,6 +126,9 @@
   EXPECT_FLOAT_EQ(99999999999999999.0f,
                   FXSYS_wcstof(L"99999999999999999", 17, &used_len));
   EXPECT_EQ(17, used_len);
+
+  // For https://crbug.com/pdfium/1217
+  EXPECT_FLOAT_EQ(0.0f, FXSYS_wcstof(L"e76", 3, nullptr));
 }
 
 TEST(fxcrt, FXSYS_SafeOps) {