summaryrefslogtreecommitdiffstats
path: root/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
diff options
context:
space:
mode:
Diffstat (limited to 'clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h')
-rw-r--r--clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h11
1 files changed, 7 insertions, 4 deletions
diff --git a/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h b/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
index 4ca49dfbd99..3b768c5a692 100644
--- a/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
+++ b/clang/include/clang/Analysis/Analyses/ThreadSafetyUtil.h
@@ -80,7 +80,7 @@ public:
SimpleArray(T *Dat, size_t Cp, size_t Sz = 0)
: Data(Dat), Size(Sz), Capacity(Cp) {}
SimpleArray(MemRegionRef A, size_t Cp)
- : Data(A.allocateT<T>(Cp)), Size(0), Capacity(Cp) {}
+ : Data(Cp == 0 ? nullptr : A.allocateT<T>(Cp)), Size(0), Capacity(Cp) {}
SimpleArray(SimpleArray<T> &&A)
: Data(A.Data), Size(A.Size), Capacity(A.Capacity) {
A.Data = nullptr;
@@ -100,11 +100,14 @@ public:
return *this;
}
- T *resize(size_t Ncp, MemRegionRef A) {
+ void reserve(size_t Ncp, MemRegionRef A) {
+ if (Ncp < Capacity)
+ return;
T *Odata = Data;
Data = A.allocateT<T>(Ncp);
+ Capacity = Ncp;
memcpy(Data, Odata, sizeof(T) * Size);
- return Odata;
+ return;
}
typedef T *iterator;
@@ -134,7 +137,7 @@ public:
}
void setValues(unsigned Sz, const T& C) {
- assert(Sz < Capacity);
+ assert(Sz <= Capacity);
Size = Sz;
for (unsigned i = 0; i < Sz; ++i) {
Data[i] = C;
OpenPOWER on IntegriCloud