aspell-devel
[Top][All Lists]
Advanced

[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() { 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]