"README.md" did not exist on "4f4f767b2b4e7a27096e5d260d3991811bd17b47"
C++: Fix crash after triggering completion and closing editor
Fix use-after-free for the following case:
1. Open an editor
2. Trigger a long processing completion
(e.g. simulate with QThread::msleep in
CppCompletionAssistInterface::getCppSpecifics)
3. ...and immediately close the editor (e.g. with Ctrl+W)
4. Wait until it crashes.
The completion thread relied on the BuiltinEditorDocumentParser object,
which is deleted once the editor is closed. Fixed by sharing the
ownership of that object between the *EditorDocumentProcessor and the
completion assist interface.
This case came up when doing tests for the bug report below.
Task-number: QTCREATORBUG-14991
Change-Id: I0b009229e68fc6b7838740858cdc41a32403fe6f
Reviewed-by:
David Schulz <david.schulz@theqtcompany.com>
Showing
- src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp 7 additions, 7 deletionssrc/plugins/clangcodemodel/clangeditordocumentprocessor.cpp
- src/plugins/clangcodemodel/clangeditordocumentprocessor.h 2 additions, 2 deletionssrc/plugins/clangcodemodel/clangeditordocumentprocessor.h
- src/plugins/clangcodemodel/clangutils.cpp 1 addition, 1 deletionsrc/plugins/clangcodemodel/clangutils.cpp
- src/plugins/cppeditor/cppeditordocument.cpp 1 addition, 1 deletionsrc/plugins/cppeditor/cppeditordocument.cpp
- src/plugins/cpptools/baseeditordocumentparser.cpp 2 additions, 2 deletionssrc/plugins/cpptools/baseeditordocumentparser.cpp
- src/plugins/cpptools/baseeditordocumentparser.h 2 additions, 1 deletionsrc/plugins/cpptools/baseeditordocumentparser.h
- src/plugins/cpptools/baseeditordocumentprocessor.cpp 1 addition, 1 deletionsrc/plugins/cpptools/baseeditordocumentprocessor.cpp
- src/plugins/cpptools/baseeditordocumentprocessor.h 2 additions, 2 deletionssrc/plugins/cpptools/baseeditordocumentprocessor.h
- src/plugins/cpptools/builtineditordocumentparser.cpp 4 additions, 4 deletionssrc/plugins/cpptools/builtineditordocumentparser.cpp
- src/plugins/cpptools/builtineditordocumentparser.h 2 additions, 1 deletionsrc/plugins/cpptools/builtineditordocumentparser.h
- src/plugins/cpptools/builtineditordocumentprocessor.cpp 7 additions, 7 deletionssrc/plugins/cpptools/builtineditordocumentprocessor.cpp
- src/plugins/cpptools/builtineditordocumentprocessor.h 2 additions, 2 deletionssrc/plugins/cpptools/builtineditordocumentprocessor.h
- src/plugins/cpptools/cppcompletionassist.cpp 7 additions, 7 deletionssrc/plugins/cpptools/cppcompletionassist.cpp
- src/plugins/cpptools/cppcompletionassist.h 4 additions, 0 deletionssrc/plugins/cpptools/cppcompletionassist.h
- src/plugins/cpptools/cppmodelmanager_test.cpp 2 additions, 2 deletionssrc/plugins/cpptools/cppmodelmanager_test.cpp
- src/plugins/designer/gotoslot_test.cpp 2 additions, 2 deletionssrc/plugins/designer/gotoslot_test.cpp
- src/plugins/texteditor/codeassist/codeassistant.cpp 1 addition, 8 deletionssrc/plugins/texteditor/codeassist/codeassistant.cpp
Loading
Please register or sign in to comment