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