]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
PrebufferedStream: avoid dereferencing end()
authorSage Weil <sage@inktank.com>
Fri, 28 Sep 2012 13:45:06 +0000 (06:45 -0700)
committerSage Weil <sage@inktank.com>
Fri, 28 Sep 2012 20:18:04 +0000 (13:18 -0700)
This appeared to work, but probably isn't a good idea.

CID 716940: Using invalid iterator (INVALIDATE_ITERATOR)
At (4): Dereferencing iterator "this->m_overflow.end()" though it is already past the end of its container.

Signed-off-by: Sage Weil <sage@inktank.com>
src/common/PrebufferedStreambuf.cc

index 600b3fd3c3691f5514dd321ff5ef525ca67d667b..d6db8bbe0af219e599739670567773792574bcfc 100644 (file)
@@ -20,7 +20,7 @@ PrebufferedStreambuf::int_type PrebufferedStreambuf::overflow(int_type c)
     m_overflow.resize(old_len * 2);
   }
   m_overflow[old_len] = c;
-  this->setp(&m_overflow[old_len + 1], &*m_overflow.end());
+  this->setp(&m_overflow[old_len + 1], &*m_overflow.begin() + m_overflow.size());
   return std::char_traits<char>::not_eof(c);
 }