[bit-set-invertible] Second try fixing previous()
diff --git a/src/hb-bit-set-invertible.hh b/src/hb-bit-set-invertible.hh
index 5be6e45..ab48239 100644
--- a/src/hb-bit-set-invertible.hh
+++ b/src/hb-bit-set-invertible.hh
@@ -211,6 +211,12 @@
return s.next (codepoint);
auto old = *codepoint;
+ if (unlikely (old + 1 == INVALID))
+ {
+ *codepoint = INVALID;
+ return false;
+ }
+
auto v = old;
s.next (&v);
if (old + 1 < v)
@@ -219,12 +225,6 @@
return true;
}
- if (unlikely (old + 1 == INVALID))
- {
- *codepoint = INVALID;
- return false;
- }
-
v = old;
s.next_range (&old, &v);
@@ -237,20 +237,21 @@
return s.previous (codepoint);
auto old = *codepoint;
- auto v = old;
- s.previous (&v);
- if (old - 1 > v || v == INVALID)
- {
- *codepoint = old - 1;
- return true;
- }
-
if (unlikely (old - 1 == INVALID))
{
*codepoint = INVALID;
return false;
}
+ auto v = old;
+ s.previous (&v);
+
+ if (old - 1 > v || v == INVALID)
+ {
+ *codepoint = old - 1;
+ return true;
+ }
+
v = old;
s.previous_range (&v, &old);