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;
}