summaryrefslogtreecommitdiff
path: root/src/utf8_iterator.hh
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-07-02 21:14:01 +0100
committerMaxime Coste <frrrwww@gmail.com>2014-07-05 12:10:06 +0100
commited68d1ff287d43c5293abb4d41e908aa8e50afec (patch)
treeb5ab042ba67259a63b2aa0ae99ad74a5bc646a7f /src/utf8_iterator.hh
parent3f70d91f8c716ef2dbc76abb9c878f86ecb946f7 (diff)
utf8: use end of sequence iterators for more security
Diffstat (limited to 'src/utf8_iterator.hh')
-rw-r--r--src/utf8_iterator.hh10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/utf8_iterator.hh b/src/utf8_iterator.hh
index c7ea102f..d2d8fa6a 100644
--- a/src/utf8_iterator.hh
+++ b/src/utf8_iterator.hh
@@ -12,7 +12,7 @@ namespace utf8
// adapter for an iterator on bytes which permits to iterate
// on unicode codepoints instead.
template<typename Iterator,
- typename InvalidPolicy = InvalidBytePolicy::Assert>
+ typename InvalidPolicy = utf8::InvalidPolicy::Assert>
class iterator
{
public:
@@ -21,7 +21,7 @@ public:
iterator& operator++()
{
- m_it = utf8::next(m_it);
+ m_it = utf8::next(m_it, Iterator{});
invalidate_value();
return *this;
}
@@ -41,7 +41,7 @@ public:
iterator& operator--()
{
- m_it = utf8::previous(m_it);
+ m_it = utf8::previous(m_it, Iterator{});
invalidate_value();
return *this;
}
@@ -132,7 +132,7 @@ private:
Codepoint get_value() const
{
if (m_value == -1)
- m_value = utf8::codepoint<InvalidPolicy>(m_it);
+ m_value = utf8::codepoint<InvalidPolicy>(m_it, Iterator{});
return m_value;
}
@@ -140,7 +140,7 @@ private:
mutable Codepoint m_value = -1;
};
-template<typename InvalidPolicy = InvalidBytePolicy::Assert, typename Iterator>
+template<typename InvalidPolicy = utf8::InvalidPolicy::Assert, typename Iterator>
iterator<Iterator, InvalidPolicy> make_iterator(Iterator it)
{
return iterator<Iterator, InvalidPolicy>{std::move(it)};