• Nikolai Kosjar's avatar
    C++: Fix crash after triggering completion and closing editor · 169556db
    Nikolai Kosjar authored
    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: default avatarDavid Schulz <david.schulz@theqtcompany.com>
    169556db
builtineditordocumentprocessor.cpp 10.1 KB