diff options
author | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-01-24 13:02:43 +0100 |
---|---|---|
committer | Nikolai Kosjar <nikolai.kosjar@qt.io> | 2018-01-24 14:23:46 +0000 |
commit | 8836f2a6dcdb6ffadf3dc37f763423aba08eb9cd (patch) | |
tree | 38afb99734b36bff7f92c729f5575233a2c609cf | |
parent | b500bba6af2e238d2b74288156ca613d6a34090d (diff) | |
download | qt-creator-8836f2a6dcdb6ffadf3dc37f763423aba08eb9cd.tar.gz |
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>
-rw-r--r-- | src/plugins/clangcodemodel/clangbackendcommunicator.cpp | 6 | ||||
-rw-r--r-- | src/plugins/clangcodemodel/clangbackendcommunicator.h | 2 |
2 files changed, 3 insertions, 5 deletions
diff --git a/src/plugins/clangcodemodel/clangbackendcommunicator.cpp b/src/plugins/clangcodemodel/clangbackendcommunicator.cpp index 1abd6982ed..59b928babe 100644 --- a/src/plugins/clangcodemodel/clangbackendcommunicator.cpp +++ b/src/plugins/clangcodemodel/clangbackendcommunicator.cpp @@ -70,11 +70,9 @@ static QString backendProcessPath() namespace ClangCodeModel { namespace Internal { -class DummyBackendSender : public BackendSender +class DummyBackendSender : public ClangBackEnd::ClangCodeModelServerInterface { public: - DummyBackendSender() : BackendSender(nullptr) {} - void end() override {} void registerTranslationUnitsForEditor(const RegisterTranslationUnitForEditorMessage &) override {} void updateTranslationUnitsForEditor(const UpdateTranslationUnitsForEditorMessage &) override {} @@ -87,10 +85,10 @@ public: void requestDocumentAnnotations(const RequestDocumentAnnotationsMessage &) override {} void requestReferences(const RequestReferencesMessage &) override {} void requestFollowSymbol(const RequestFollowSymbolMessage &) override {} + void requestToolTip(const RequestToolTipMessage &) override {} void updateVisibleTranslationUnits(const UpdateVisibleTranslationUnitsMessage &) override {} }; - BackendCommunicator::BackendCommunicator() : m_connection(&m_receiver) , m_sender(new DummyBackendSender()) diff --git a/src/plugins/clangcodemodel/clangbackendcommunicator.h b/src/plugins/clangcodemodel/clangbackendcommunicator.h index b3cb166a39..70312aaeb9 100644 --- a/src/plugins/clangcodemodel/clangbackendcommunicator.h +++ b/src/plugins/clangcodemodel/clangbackendcommunicator.h @@ -147,7 +147,7 @@ private: BackendReceiver m_receiver; ClangBackEnd::ClangCodeModelConnectionClient m_connection; QTimer m_backendStartTimeOut; - QScopedPointer<BackendSender> m_sender; + QScopedPointer<ClangBackEnd::ClangCodeModelServerInterface> m_sender; int m_connectedCount = 0; }; |