[skippy-iter] Fix two logic errors

First, a signed underflow.

Second, a wrong condition.

Both were introduced in 42681bdb55a75520d4ac194302fe936d1ce3cb34
diff --git a/src/hb-ot-layout-gsubgpos.hh b/src/hb-ot-layout-gsubgpos.hh
index 6f1c614..5529ccb 100644
--- a/src/hb-ot-layout-gsubgpos.hh
+++ b/src/hb-ot-layout-gsubgpos.hh
@@ -537,10 +537,10 @@
       assert (num_items > 0);
       /* The alternate condition below is faster at string boundaries,
        * but produces subpar "unsafe-to-concat" values. */
-      unsigned stop = end - num_items;
+      signed stop = (signed) end - (signed) num_items;
       if (c->buffer->flags & HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT)
-        stop = end - 1;
-      while (idx < stop)
+        stop = (signed) end - 1;
+      while ((signed) idx < stop)
       {
 	idx++;
 	hb_glyph_info_t &info = c->buffer->info[idx];
@@ -575,7 +575,7 @@
       assert (num_items > 0);
       /* The alternate condition below is faster at string boundaries,
        * but produces subpar "unsafe-to-concat" values. */
-      unsigned stop = 1 - num_items;
+      unsigned stop = num_items - 1;
       if (c->buffer->flags & HB_BUFFER_FLAG_PRODUCE_UNSAFE_TO_CONCAT)
         stop = 1 - 1;
       while (idx > stop)