From 6101ad8396b5b5a9cc0e5090e867c131d86d911d Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 16 Jan 2010 16:44:59 +0000 Subject: (svn r18828) -Fix (r18823): Decrementing uints is different to ints. --- src/misc/fixedsizearray.hpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/misc') diff --git a/src/misc/fixedsizearray.hpp b/src/misc/fixedsizearray.hpp index 5d52c2881..fe7d6b012 100644 --- a/src/misc/fixedsizearray.hpp +++ b/src/misc/fixedsizearray.hpp @@ -78,8 +78,10 @@ public: /** Clear (destroy) all items */ FORCEINLINE void Clear() { - /* walk through all allocated items backward and destroy them */ - for (T *pItem = &data[Length() - 1]; pItem >= data; pItem--) { + /* Walk through all allocated items backward and destroy them + * Note: this->Length() can be zero. In that case data[this->Length() - 1] is evaluated unsigned + * on some compilers with some architectures. (e.g. gcc with x86) */ + for (T *pItem = this->data + this->Length() - 1; pItem >= this->data; pItem--) { pItem->~T(); } /* number of items become zero */ -- cgit v1.2.3-54-g00ecf