forked from qt-creator/qt-creator
Clang: Fix crash when backend is not yet started
Due to DummyBackendSender not overriding requestToolTip() the base implementation was called which assumed a connected backend. To avoid this in future, derive DummyBackendSender from ClangCodeModelServerInterface so the compiler will warn about not overridden functions. Task-number: QTCREATORBUG-19644 Change-Id: Ifd846cbe581092e1688719119dad5003da66d0a3 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
@@ -70,11 +70,9 @@ static QString backendProcessPath()
|
|||||||
namespace ClangCodeModel {
|
namespace ClangCodeModel {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
class DummyBackendSender : public BackendSender
|
class DummyBackendSender : public ClangBackEnd::ClangCodeModelServerInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DummyBackendSender() : BackendSender(nullptr) {}
|
|
||||||
|
|
||||||
void end() override {}
|
void end() override {}
|
||||||
void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {}
|
void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {}
|
||||||
void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {}
|
void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {}
|
||||||
@@ -87,10 +85,10 @@ public:
|
|||||||
void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {}
|
void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {}
|
||||||
void requestReferences(const RequestReferencesMessage &) override {}
|
void requestReferences(const RequestReferencesMessage &) override {}
|
||||||
void requestFollowSymbol(const RequestFollowSymbolMessage &) override {}
|
void requestFollowSymbol(const RequestFollowSymbolMessage &) override {}
|
||||||
|
void requestToolTip(const RequestToolTipMessage &) override {}
|
||||||
void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {}
|
void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
BackendCommunicator::BackendCommunicator()
|
BackendCommunicator::BackendCommunicator()
|
||||||
: m_connection(&m_receiver)
|
: m_connection(&m_receiver)
|
||||||
, m_sender(new DummyBackendSender())
|
, m_sender(new DummyBackendSender())
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ private:
|
|||||||
BackendReceiver m_receiver;
|
BackendReceiver m_receiver;
|
||||||
ClangBackEnd::ClangCodeModelConnectionClient m_connection;
|
ClangBackEnd::ClangCodeModelConnectionClient m_connection;
|
||||||
QTimer m_backendStartTimeOut;
|
QTimer m_backendStartTimeOut;
|
||||||
QScopedPointer<BackendSender> m_sender;
|
QScopedPointer<ClangBackEnd::ClangCodeModelServerInterface> m_sender;
|
||||||
int m_connectedCount = 0;
|
int m_connectedCount = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user