diff options
Diffstat (limited to 'Source/JavaScriptCore/wtf/Vector.h')
-rw-r--r-- | Source/JavaScriptCore/wtf/Vector.h | 9 |
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 { |