Fix nullptr error in CFXJS_Engine::Execute().

BUG=chromium:912846

Change-Id: I7674a393db7328db0bed8326da3ebcbcd643d0a2
Reviewed-on: https://pdfium-review.googlesource.com/c/46852
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/cfxjs_engine.cpp b/fxjs/cfxjs_engine.cpp
index e7ef7ee..9274cd3 100644
--- a/fxjs/cfxjs_engine.cpp
+++ b/fxjs/cfxjs_engine.cpp
@@ -32,6 +32,14 @@
   return const_cast<void*>(static_cast<const void*>(kPerObjectDataTag));
 }
 
+std::pair<int, int> GetLineAndColumnFromError(v8::Local<v8::Message> message,
+                                              v8::Local<v8::Context> context) {
+  if (message.IsEmpty())
+    return std::make_pair(-1, -1);
+  return std::make_pair(message->GetLineNumber(context).FromMaybe(-1),
+                        message->GetStartColumn());
+}
+
 }  // namespace
 
 // Global weak map to save dynamic objects.
@@ -553,19 +561,20 @@
            .ToLocal(&compiled_script)) {
     v8::String::Utf8Value error(GetIsolate(), try_catch.Exception());
     v8::Local<v8::Message> msg = try_catch.Message();
-    v8::Maybe<int> line = msg->GetLineNumber(context);
-
-    return IJS_Runtime::JS_Error(line.FromMaybe(-1), msg->GetStartColumn(),
-                                 WideString::FromUTF8(*error));
+    int line = -1;
+    int column = -1;
+    std::tie(line, column) = GetLineAndColumnFromError(msg, context);
+    return IJS_Runtime::JS_Error(line, column, WideString::FromUTF8(*error));
   }
 
   v8::Local<v8::Value> result;
   if (!compiled_script->Run(context).ToLocal(&result)) {
     v8::String::Utf8Value error(GetIsolate(), try_catch.Exception());
     auto msg = try_catch.Message();
-    auto line = msg->GetLineNumber(context);
-    return IJS_Runtime::JS_Error(line.FromMaybe(-1), msg->GetStartColumn(),
-                                 WideString::FromUTF8(*error));
+    int line = -1;
+    int column = -1;
+    std::tie(line, column) = GetLineAndColumnFromError(msg, context);
+    return IJS_Runtime::JS_Error(line, column, WideString::FromUTF8(*error));
   }
   return pdfium::nullopt;
 }