forked from qt-creator/qt-creator
Lua: Fix for client crash on callback call
Change-Id: Idd2ca77b050aa22c3c34d1fef45fac8e960c4401 Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
This commit is contained in:
@@ -34,7 +34,7 @@ namespace {
|
|||||||
|
|
||||||
class RequestWithResponse : public LanguageServerProtocol::JsonRpcMessage
|
class RequestWithResponse : public LanguageServerProtocol::JsonRpcMessage
|
||||||
{
|
{
|
||||||
sol::function m_callback;
|
sol::main_function m_callback;
|
||||||
LanguageServerProtocol::MessageId m_id;
|
LanguageServerProtocol::MessageId m_id;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -210,7 +210,7 @@ public:
|
|||||||
TransportType m_transportType{TransportType::StdIO};
|
TransportType m_transportType{TransportType::StdIO};
|
||||||
std::function<expected_str<void>(CommandLine &)> m_cmdLineCallback;
|
std::function<expected_str<void>(CommandLine &)> m_cmdLineCallback;
|
||||||
std::function<expected_str<void>(QString &)> m_initOptionsCallback;
|
std::function<expected_str<void>(QString &)> m_initOptionsCallback;
|
||||||
sol::function m_asyncInitOptions;
|
sol::main_function m_asyncInitOptions;
|
||||||
bool m_isUpdatingAsyncOptions{false};
|
bool m_isUpdatingAsyncOptions{false};
|
||||||
AspectContainer *m_aspects{nullptr};
|
AspectContainer *m_aspects{nullptr};
|
||||||
QString m_name;
|
QString m_name;
|
||||||
@@ -330,7 +330,7 @@ public:
|
|||||||
this,
|
this,
|
||||||
&LuaClientWrapper::onClientRemoved);
|
&LuaClientWrapper::onClientRemoved);
|
||||||
|
|
||||||
if (auto asyncInit = options.get<sol::optional<sol::function>>(
|
if (auto asyncInit = options.get<sol::optional<sol::main_function>>(
|
||||||
"initializationOptionsAsync")) {
|
"initializationOptionsAsync")) {
|
||||||
m_asyncInitOptions = *asyncInit;
|
m_asyncInitOptions = *asyncInit;
|
||||||
QMetaObject::invokeMethod(
|
QMetaObject::invokeMethod(
|
||||||
@@ -379,7 +379,7 @@ public:
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerMessageCallback(const QString &msg, const sol::function &callback)
|
void registerMessageCallback(const QString &msg, const sol::main_function &callback)
|
||||||
{
|
{
|
||||||
m_messageCallbacks.insert(msg, callback);
|
m_messageCallbacks.insert(msg, callback);
|
||||||
updateMessageCallbacks();
|
updateMessageCallbacks();
|
||||||
@@ -454,7 +454,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void sendMessageWithIdForDocument_cb(
|
void sendMessageWithIdForDocument_cb(
|
||||||
TextEditor::TextDocument *document, const sol::table &message, const sol::function callback)
|
TextEditor::TextDocument *document, const sol::table &message, const sol::main_function callback)
|
||||||
{
|
{
|
||||||
const QJsonValue messageValue = ::Lua::toJson(message);
|
const QJsonValue messageValue = ::Lua::toJson(message);
|
||||||
if (!messageValue.isObject())
|
if (!messageValue.isObject())
|
||||||
@@ -691,7 +691,7 @@ static void registerLuaApi()
|
|||||||
return sol::lua_nil;
|
return sol::lua_nil;
|
||||||
return c->m_onInstanceStart.value();
|
return c->m_onInstanceStart.value();
|
||||||
},
|
},
|
||||||
[](LuaClientWrapper *c, const sol::function &f) { c->m_onInstanceStart = f; }),
|
[](LuaClientWrapper *c, const sol::main_function &f) { c->m_onInstanceStart = f; }),
|
||||||
"registerMessage",
|
"registerMessage",
|
||||||
&LuaClientWrapper::registerMessageCallback,
|
&LuaClientWrapper::registerMessageCallback,
|
||||||
"sendMessage",
|
"sendMessage",
|
||||||
|
Reference in New Issue
Block a user