Nikola Forró a23e4d
From c6755a399e8a31cbee5129dde5124f9c54a47ab6 Mon Sep 17 00:00:00 2001
Nikola Forró a23e4d
From: =?UTF-8?q?Nikola=20Forr=C3=B3?= <nforro@redhat.com>
Nikola Forró a23e4d
Date: Wed, 4 Apr 2018 14:58:03 +0200
Nikola Forró a23e4d
Subject: [PATCH] Do not call back() on an empty vector
Nikola Forró a23e4d
MIME-Version: 1.0
Nikola Forró a23e4d
Content-Type: text/plain; charset=UTF-8
Nikola Forró a23e4d
Content-Transfer-Encoding: 8bit
Nikola Forró a23e4d
Nikola Forró a23e4d
Calling std::vector::back() on an empty container is undefined.
Nikola Forró a23e4d
Avoid doing that, simply return pointer to the beginning in case
Nikola Forró a23e4d
the vector is empty.
Nikola Forró a23e4d
Nikola Forró a23e4d
Signed-off-by: Nikola Forró <nforro@redhat.com>
Nikola Forró a23e4d
---
Nikola Forró a23e4d
 common/vector.hpp | 6 +++---
Nikola Forró a23e4d
 1 file changed, 3 insertions(+), 3 deletions(-)
Nikola Forró a23e4d
Nikola Forró a23e4d
diff --git a/common/vector.hpp b/common/vector.hpp
Nikola Forró a23e4d
index 782e4b0..cb344bd 100644
Nikola Forró a23e4d
--- a/common/vector.hpp
Nikola Forró a23e4d
+++ b/common/vector.hpp
Nikola Forró a23e4d
@@ -36,13 +36,13 @@ namespace acommon
Nikola Forró a23e4d
     }
Nikola Forró a23e4d
     T * data() {return &*this->begin();}
Nikola Forró a23e4d
     T * data(int pos) {return &*this->begin() + pos;}
Nikola Forró a23e4d
-    T * data_end() {return &this->back()+1;}
Nikola Forró a23e4d
+    T * data_end() {return this->empty() ? &*this->begin() : &this->back()+1;}
Nikola Forró a23e4d
 
Nikola Forró a23e4d
     T * pbegin() {return &*this->begin();}
Nikola Forró a23e4d
-    T * pend()   {return &this->back()+1;}
Nikola Forró a23e4d
+    T * pend()   {return this->empty() ? &*this->begin() : &this->back()+1;}
Nikola Forró a23e4d
 
Nikola Forró a23e4d
     const T * pbegin() const {return &*this->begin();}
Nikola Forró a23e4d
-    const T * pend()   const {return &this->back()+1;}
Nikola Forró a23e4d
+    const T * pend()   const {return this->empty() ? &*this->begin() : &this->back()+1;}
Nikola Forró a23e4d
 
Nikola Forró a23e4d
     template <typename U>
Nikola Forró a23e4d
     U * datap() {