LanguageClient: fix memory leak in client initialization

Change-Id: I30e4032cea5fff46ffd790336729cc6fbaf4b104
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
David Schulz
2020-02-20 10:11:35 +01:00
parent 94ee0a575d
commit db7d12b78c

View File

@@ -247,8 +247,8 @@ void Client::initialize()
QTC_ASSERT(m_clientInterface, return);
QTC_ASSERT(m_state == Uninitialized, return);
qCDebug(LOGLSPCLIENT) << "initializing language server " << m_displayName;
auto initRequest = new InitializeRequest();
auto params = initRequest->params().value_or(InitializeParams());
InitializeRequest initRequest;
auto params = initRequest.params().value_or(InitializeParams());
params.setCapabilities(generateClientCapabilities());
if (m_project) {
params.setRootUri(DocumentUri::fromFilePath(m_project->projectDirectory()));
@@ -256,13 +256,13 @@ void Client::initialize()
return WorkSpaceFolder(pro->projectDirectory().toString(), pro->displayName());
}));
}
initRequest->setParams(params);
initRequest->setResponseCallback([this](const InitializeRequest::Response &initResponse){
initRequest.setParams(params);
initRequest.setResponseCallback([this](const InitializeRequest::Response &initResponse){
initializeCallback(initResponse);
});
// directly send data otherwise the state check would fail;
initRequest->registerResponseHandler(&m_responseHandlers);
m_clientInterface->sendMessage(initRequest->toBaseMessage());
initRequest.registerResponseHandler(&m_responseHandlers);
m_clientInterface->sendMessage(initRequest.toBaseMessage());
m_state = InitializeRequested;
}