aboutsummaryrefslogtreecommitdiff
path: root/clang/tools/libclang/CIndexCodeCompletion.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2020-04-28 17:45:07 -0700
committerDavid Blaikie <dblaikie@gmail.com>2020-04-28 17:45:07 -0700
commitc98a7e9bcc26a13d5e0b3fd199a7d0298777d85e (patch)
tree098f905273615af99f8104173c2509bb865be0b3 /clang/tools/libclang/CIndexCodeCompletion.cpp
parentf6d5320ebe95857bbff01e977dfcfc1971aef4a3 (diff)
downloadllvm-c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e.zip
llvm-c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e.tar.gz
llvm-c98a7e9bcc26a13d5e0b3fd199a7d0298777d85e.tar.bz2
AllocatedCXCodeCompleteResults::DiagnosticWrappers: use unique_ptr to simplify memory management
Diffstat (limited to 'clang/tools/libclang/CIndexCodeCompletion.cpp')
-rw-r--r--clang/tools/libclang/CIndexCodeCompletion.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/clang/tools/libclang/CIndexCodeCompletion.cpp b/clang/tools/libclang/CIndexCodeCompletion.cpp
index 1311f66..6685c89 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;
}