From c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Tue, 28 Apr 2020 17:45:07 -0700 Subject: [PATCH] AllocatedCXCodeCompleteResults::DiagnosticWrappers: use unique_ptr to simplify memory management --- clang/tools/libclang/CIndexCodeCompletion.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp index 1311f66ce0bc8..6685c892749ea 100644 --- a/clang/tools/libclang/CIndexCodeCompletion.cpp +++ b/clang/tools/libclang/CIndexCodeCompletion.cpp @@ -254,7 +254,7 @@ struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults { SmallVector Diagnostics; /// Allocated API-exposed wrappters for Diagnostics. - SmallVector DiagnosticsWrappers; + SmallVector, 8> DiagnosticsWrappers; IntrusiveRefCntPtr DiagOpts; @@ -371,7 +371,6 @@ AllocatedCXCodeCompleteResults::AllocatedCXCodeCompleteResults( } AllocatedCXCodeCompleteResults::~AllocatedCXCodeCompleteResults() { - llvm::DeleteContainerPointers(DiagnosticsWrappers); delete [] Results; for (unsigned I = 0, N = TemporaryBuffers.size(); I != N; ++I) @@ -914,10 +913,12 @@ clang_codeCompleteGetDiagnostic(CXCodeCompleteResults *ResultsIn, if (!Results || Index >= Results->Diagnostics.size()) return nullptr; - CXStoredDiagnostic *Diag = Results->DiagnosticsWrappers[Index]; + CXStoredDiagnostic *Diag = Results->DiagnosticsWrappers[Index].get(); if (!Diag) - Results->DiagnosticsWrappers[Index] = Diag = - new CXStoredDiagnostic(Results->Diagnostics[Index], Results->LangOpts); + Diag = (Results->DiagnosticsWrappers[Index] = + std::make_unique( + Results->Diagnostics[Index], Results->LangOpts)) + .get(); return Diag; }