[clang] c98a7e9 - AllocatedCXCodeCompleteResults::DiagnosticWrappers: use unique_ptr to simplify memory management

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Tue Apr 28 17:45:54 PDT 2020


Author: David Blaikie
Date: 2020-04-28T17:45:07-07:00
New Revision: c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e

URL: https://github.com/llvm/llvm-project/commit/c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e
DIFF: https://github.com/llvm/llvm-project/commit/c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e.diff

LOG: AllocatedCXCodeCompleteResults::DiagnosticWrappers: use unique_ptr to simplify memory management

Added: 
    

Modified: 
    clang/tools/libclang/CIndexCodeCompletion.cpp

Removed: 
    


################################################################################
diff  --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp
index 1311f66ce0bc..6685c892749e 100644
--- a/clang/tools/libclang/CIndexCodeCompletion.cpp
+++ b/clang/tools/libclang/CIndexCodeCompletion.cpp
@@ -254,7 +254,7 @@ struct AllocatedCXCodeCompleteResults : public CXCodeCompleteResults {
   SmallVector<StoredDiagnostic, 8> Diagnostics;
 
   /// Allocated API-exposed wrappters for Diagnostics.
-  SmallVector<CXStoredDiagnostic *, 8> DiagnosticsWrappers;
+  SmallVector<std::unique_ptr<CXStoredDiagnostic>, 8> DiagnosticsWrappers;
 
   IntrusiveRefCntPtr<DiagnosticOptions> 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<CXStoredDiagnostic>(
+                    Results->Diagnostics[Index], Results->LangOpts))
+               .get();
   return Diag;
 }
 


        


More information about the cfe-commits mailing list