diff options
| author | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-28 00:08:48 +0000 | 
|---|---|---|
| committer | graehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f> | 2010-08-28 00:08:48 +0000 | 
| commit | 79be7e35a72365d861dd4140323275cac52a9e33 (patch) | |
| tree | 1ad37b85c0f9482e36056502e299e3c2cd5fe7a9 /utils | |
| parent | 8ff664a63254c2e64dc296caffc3a0261e2473af (diff) | |
value_array alloc fix
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@628 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'utils')
| -rwxr-xr-x | utils/value_array.h | 16 | 
1 files changed, 8 insertions, 8 deletions
| diff --git a/utils/value_array.h b/utils/value_array.h index 3a8b3292..2010fefe 100755 --- a/utils/value_array.h +++ b/utils/value_array.h @@ -57,7 +57,7 @@ public:    typedef T* pointer;    size_type size() const { return sz; } -  bool empty() const { return size() == 0; } +  bool empty() const { return !sz; }    iterator begin() { return array; }    iterator end() { return array + sz; } @@ -87,15 +87,15 @@ protected:    {      if (!array) return;      // it's cool that this destroys in reverse order of construction, but why bother? -    for (size_type i = sz; i != 0;) -      A::destroy(array + --i); +    for (pointer i=array+sz;i>array;) +      A::destroy(--i);    }    void dealloc() { -    if (array != NULL) A::deallocate(array,sz); +    if (sz && array != NULL) A::deallocate(array,sz);      sz=0;    }    void alloc(size_type s) { -    array = s==0 ? 0 : A::allocate(sz); +    array = s==0 ? 0 : A::allocate(s);      sz=s;    } @@ -133,11 +133,11 @@ protected:      copy_construct(itr,end,array);    }    inline void fill(const_reference t) { -    for (T *i=array,*e=array+sz;i!=e;++i) +    for (pointer i=array,e=array+sz;i!=e;++i)        new(i) T(t);    }    inline void fill() { -    for (T *i=array,*e=array+sz;i!=e;++i) +    for (pointer i=array,e=array+sz;i!=e;++i)        new(i) T();    } @@ -184,7 +184,7 @@ public:    }    template <class I> -  void reinit(I itr, I end) { +  void reinit_range(I itr, I end) {      reinit_noconstruct(std::distance(itr,end));      copy_construct(itr,end,array);    } | 
