diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-06-26 13:25:07 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-26 15:46:04 +0200 |
commit | 8c0b5be80215a23d2236d2ad2d1681aa80499cc8 (patch) | |
tree | f010e10977b0a1951eeb36a4b2132e2be6d4cdc7 /src/3rdparty/masm/stubs | |
parent | b24bf4fc0c728e380c953ed3dfb5613d9547b13a (diff) |
Fix failing assertion with MSVC in debug builds in various tests
We re-implemented Vector::begin() and end() by means of dereferencing the return
value from std::begin() and then taking the address of it. That causes a failing
assertion in MSVC's STL (rightly so!). We did this only to avoid modifying
the original YarrJIT.cpp code.
This patch instead simplifies our Vector.h stub again and just fixes the two
small occurrences in YarrJIT.cpp where it expects vector->begin() to return a
pointer instead of an iterator.
Change-Id: I2ad137be91ea969ccb310333dffa8d98e5825f8f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/3rdparty/masm/stubs')
-rw-r--r-- | src/3rdparty/masm/stubs/wtf/Vector.h | 23 |
1 files changed, 5 insertions, 18 deletions
diff --git a/src/3rdparty/masm/stubs/wtf/Vector.h b/src/3rdparty/masm/stubs/wtf/Vector.h index a32df4f9ad..138a234f2b 100644 --- a/src/3rdparty/masm/stubs/wtf/Vector.h +++ b/src/3rdparty/masm/stubs/wtf/Vector.h @@ -55,9 +55,6 @@ namespace WTF { template <typename T, int capacity = 1, int overflowMode = UnsafeVectorOverflow> class Vector : public std::vector<T> { public: - typedef T* iterator; - typedef const T* const_iterator; - Vector() {} Vector(int initialSize) : std::vector<T>(initialSize) {} @@ -70,7 +67,7 @@ public: inline void append(const Vector<T>& vector) { - this->insert(this->std::vector<T>::end(), vector.std::template vector<T>::begin(), vector.std::template vector<T>::end()); + this->insert(this->end(), vector.begin(), vector.end()); } inline void append(const T* ptr, size_t count) @@ -90,33 +87,23 @@ public: inline void reserveInitialCapacity(size_t size) { this->reserve(size); } inline void insert(size_t position, T value) - { this->insert(this->std::vector<T>::begin() + position, value); } + { this->insert(this->begin() + position, value); } inline void grow(size_t size) { this->resize(size); } inline void shrink(size_t size) - { this->erase(this->std::vector<T>::begin() + size, this->std::vector<T>::end()); } + { this->erase(this->begin() + size, this->end()); } inline void shrinkToFit() { this->shrink(this->size()); } inline void remove(size_t position) - { this->erase(this->std::vector<T>::begin() + position); } + { this->erase(this->begin() + position); } inline bool isEmpty() const { return this->empty(); } - inline T &last() { return *(this->std::vector<T>::begin() + this->size() - 1); } - - inline iterator begin() - { return &(*this->std::vector<T>::begin()); } - inline const_iterator begin() const - { return &(*this->std::vector<T>::begin()); } - inline iterator end() - { return &(*this->std::vector<T>::end()); } - inline const_iterator end() const - { return &(*this->std::vector<T>::end()); } - + inline T &last() { return *(this->begin() + this->size() - 1); } }; template <typename T, int capacity> |