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