Re: Bug in vector.hpp
Peter Kümmel <[email protected]>
| Newsgroups | gmane.comp.gnu.aspell.devel |
|---|---|
| Message-ID | <[email protected]> |
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 _______________________________________________ Aspell-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/aspell-devel
vector.diff
(text/plain, 868 B)
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() {