[iter] Check for more before forwarding/rewinding past ends
diff --git a/src/hb-iter.hh b/src/hb-iter.hh
index 1b5c427..dcc49ee 100644
--- a/src/hb-iter.hh
+++ b/src/hb-iter.hh
@@ -196,11 +196,11 @@
/* Advancing: Implement __next__(), or __forward__() if random-access. */
void __next__ () { *thiz() += 1; }
- void __forward__ (unsigned n) { while (n--) ++*thiz(); }
+ void __forward__ (unsigned n) { while (*thiz() && n--) ++*thiz(); }
/* Rewinding: Implement __prev__() or __rewind__() if bidirectional. */
void __prev__ () { *thiz() -= 1; }
- void __rewind__ (unsigned n) { while (n--) --*thiz(); }
+ void __rewind__ (unsigned n) { while (*thiz() && n--) --*thiz(); }
/* Range-based for: Implement __end__() if can be done faster,
* and operator!=. */
diff --git a/src/test-iter.cc b/src/test-iter.cc
index d9e2a97..f834640 100644
--- a/src/test-iter.cc
+++ b/src/test-iter.cc
@@ -82,10 +82,8 @@
(void) _;
it += it.len ();
- if (0)
- it = it + 10;
- if (0)
- it = 10 + it;
+ it = it + 10;
+ it = 10 + it;
assert (*it == it[0]);