aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/AST/VTableBuilder.h12
-rw-r--r--lib/AST/VTableBuilder.cpp10
2 files changed, 10 insertions, 12 deletions
diff --git a/include/clang/AST/VTableBuilder.h b/include/clang/AST/VTableBuilder.h
index 2aa9a3dec9..392dad94a4 100644
--- a/include/clang/AST/VTableBuilder.h
+++ b/include/clang/AST/VTableBuilder.h
@@ -205,11 +205,11 @@ public:
typedef llvm::DenseMap<BaseSubobject, uint64_t> AddressPointsMapTy;
private:
uint64_t NumVTableComponents;
- VTableComponent *VTableComponents;
+ llvm::OwningArrayPtr<VTableComponent> VTableComponents;
/// VTableThunks - Contains thunks needed by vtables.
uint64_t NumVTableThunks;
- VTableThunkTy *VTableThunks;
+ llvm::OwningArrayPtr<VTableThunkTy> VTableThunks;
/// Address points - Address points for all vtables.
AddressPointsMapTy AddressPoints;
@@ -227,11 +227,11 @@ public:
}
vtable_component_iterator vtable_component_begin() const {
- return VTableComponents;
+ return VTableComponents.get();
}
vtable_component_iterator vtable_component_end() const {
- return VTableComponents+NumVTableComponents;
+ return VTableComponents.get()+NumVTableComponents;
}
uint64_t getNumVTableThunks() const {
@@ -239,11 +239,11 @@ public:
}
vtable_thunk_iterator vtable_thunk_begin() const {
- return VTableThunks;
+ return VTableThunks.get();
}
vtable_thunk_iterator vtable_thunk_end() const {
- return VTableThunks+NumVTableThunks;
+ return VTableThunks.get()+NumVTableThunks;
}
uint64_t getAddressPoint(BaseSubobject Base) const {
diff --git a/lib/AST/VTableBuilder.cpp b/lib/AST/VTableBuilder.cpp
index 8683d1f3cb..107d9fb78c 100644
--- a/lib/AST/VTableBuilder.cpp
+++ b/lib/AST/VTableBuilder.cpp
@@ -2157,14 +2157,12 @@ VTableLayout::VTableLayout(uint64_t NumVTableComponents,
VTableThunks(new VTableThunkTy[NumVTableThunks]),
AddressPoints(AddressPoints) {
std::copy(VTableComponents, VTableComponents+NumVTableComponents,
- this->VTableComponents);
- std::copy(VTableThunks, VTableThunks+NumVTableThunks, this->VTableThunks);
+ this->VTableComponents.get());
+ std::copy(VTableThunks, VTableThunks+NumVTableThunks,
+ this->VTableThunks.get());
}
-VTableLayout::~VTableLayout() {
- delete[] VTableComponents;
- delete[] VTableThunks;
-}
+VTableLayout::~VTableLayout() { }
VTableContext::~VTableContext() {
llvm::DeleteContainerSeconds(VTableLayouts);