[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [aspell-devel] Bug in vector.hpp
From: |
Peter Kümmel |
Subject: |
Re: [aspell-devel] Bug in vector.hpp |
Date: |
Wed, 30 Aug 2006 20:48:53 +0200 |
User-agent: |
Thunderbird 1.5.0.5 (Windows/20060719) |
Peter Kümmel wrote:
> std::vector::end() returns an iterator that
> points just beyond the end of the vector.
>
> So &*thin->end() is no valid code, because
> it is a out of bound access.
>
> std::vector::back() returns a reference to
> the last element and a pointer to the last
> element is: &back().
>
> See attached patch.
>
> Peter
To get a pointer so the same position as
before we must use: &back()+1
Index: common/vector.hpp
===================================================================
RCS file: /sources/aspell/aspell/common/vector.hpp,v
retrieving revision 1.15
diff -u -b -B -r1.15 vector.hpp
--- common/vector.hpp 3 May 2005 05:08:19 -0000 1.15
+++ common/vector.hpp 30 Aug 2006 18:43:08 -0000
@@ -47,13 +47,13 @@
}
T * data() {return &*this->begin();}
T * data(int pos) {return &*this->begin() + pos;}
- T * data_end() {return &*this->end();}
+ T * data_end() {return &this->back()+1;}
T * pbegin() {return &*this->begin();}
- T * pend() {return &*this->end();}
+ T * pend() {return &this->back()+1;}
const T * pbegin() const {return &*this->begin();}
- const T * pend() const {return &*this->end();}
+ const T * pend() const {return &this->back()+1;}
template <typename U>
U * datap() {