diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index dddbca6e2fab1f18c2d910141623fd7aefc50f8e..8a04f940ab2ab19ca73cc11762d6aeb7713beffc 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -775,6 +775,7 @@ IAssistProposal *CppCompletionAssistProcessor::createContentProposal()
                 }
             }
         } else {
+            delete *it;
             it = m_completions.erase(it);
         }
     }
diff --git a/src/plugins/texteditor/codeassist/runner.cpp b/src/plugins/texteditor/codeassist/runner.cpp
index a6afedcc1608ce8cd71a94946dbe1b4b283c85de..eaabb5f77a5734f926158416dbd525c124e457d1 100644
--- a/src/plugins/texteditor/codeassist/runner.cpp
+++ b/src/plugins/texteditor/codeassist/runner.cpp
@@ -34,6 +34,7 @@
 #include "iassistprocessor.h"
 #include "iassistproposal.h"
 #include "iassistinterface.h"
+#include "iassistproposalmodel.h"
 
 using namespace TextEditor;
 using namespace Internal;
@@ -48,8 +49,11 @@ ProcessorRunner::ProcessorRunner()
 ProcessorRunner::~ProcessorRunner()
 {
     delete m_processor;
-    if (m_discardProposal)
+    if (m_discardProposal && m_proposal) {
+        // Proposal doesn't own the model, so we need to delete both.
+        delete m_proposal->model();
         delete m_proposal;
+    }
 }
 
 void ProcessorRunner::setProcessor(IAssistProcessor *computer)