summaryrefslogtreecommitdiffstats
path: root/Source/JavaScriptCore/wtf/Vector.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/wtf/Vector.h')
-rw-r--r--Source/JavaScriptCore/wtf/Vector.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/Source/JavaScriptCore/wtf/Vector.h b/Source/JavaScriptCore/wtf/Vector.h
index 6d8dd4c..2fb4114 100644
--- a/Source/JavaScriptCore/wtf/Vector.h
+++ b/Source/JavaScriptCore/wtf/Vector.h
@@ -282,6 +282,7 @@ namespace WTF {
public:
void allocateBuffer(size_t newCapacity)
{
+ ASSERT(newCapacity);
m_capacity = newCapacity;
if (newCapacity > std::numeric_limits<size_t>::max() / sizeof(T))
CRASH();
@@ -290,6 +291,7 @@ namespace WTF {
bool tryAllocateBuffer(size_t newCapacity)
{
+ ASSERT(newCapacity);
if (newCapacity > std::numeric_limits<size_t>::max() / sizeof(T))
return false;
@@ -360,7 +362,10 @@ namespace WTF {
VectorBuffer(size_t capacity)
{
- allocateBuffer(capacity);
+ // Calling malloc(0) might take a lock and may actually do an
+ // allocation on some systems (e.g. Brew).
+ if (capacity)
+ allocateBuffer(capacity);
}
~VectorBuffer()
@@ -392,6 +397,7 @@ namespace WTF {
template<typename T, size_t inlineCapacity>
class VectorBuffer : private VectorBufferBase<T> {
+ WTF_MAKE_NONCOPYABLE(VectorBuffer);
private:
typedef VectorBufferBase<T> Base;
public:
@@ -414,6 +420,7 @@ namespace WTF {
void allocateBuffer(size_t newCapacity)
{
+ // FIXME: This should ASSERT(!m_buffer) to catch misuse/leaks.
if (newCapacity > inlineCapacity)
Base::allocateBuffer(newCapacity);
else {