[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]);