From 606841b07017ac80dea2fc5ada25b5976f2f9192 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sat, 11 May 2019 11:54:30 -0700 Subject: [PATCH] [iter] Check for more before forwarding/rewinding past ends --- src/hb-iter.hh | 4 ++-- src/test-iter.cc | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) 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 @@ struct hb_iter_fallback_mixin_t /* 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 @@ test_iterator_non_default_constructable (Iter it) (void) _; it += it.len (); - if (0) - it = it + 10; - if (0) - it = 10 + it; + it = it + 10; + it = 10 + it; assert (*it == it[0]); -- 2.7.4