diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp
index 6409758de123865f7fdb417185cdfdcebcb9e7da..c158561780652aac98970385a2048f724463438d 100644
--- a/src/plugins/cpptools/cppcompletionassist.cpp
+++ b/src/plugins/cpptools/cppcompletionassist.cpp
@@ -776,6 +776,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)