[iter] Accept pointers to hb_sink()
diff --git a/src/hb-iter.hh b/src/hb-iter.hh
index 465929f..b6c9e2d 100644
--- a/src/hb-iter.hh
+++ b/src/hb-iter.hh
@@ -388,6 +388,10 @@
   template <typename Sink> hb_sink_t<Sink>
   operator () (Sink&& s) const
   { return hb_sink_t<Sink> (s); }
+
+  template <typename Sink> hb_sink_t<Sink&>
+  operator () (Sink *s) const
+  { return hb_sink_t<Sink&> (*s); }
 } hb_sink HB_UNUSED;
 
 
diff --git a/src/hb-ot-layout-gsub-table.hh b/src/hb-ot-layout-gsub-table.hh
index 57bb890..17cf174 100644
--- a/src/hb-ot-layout-gsub-table.hh
+++ b/src/hb-ot-layout-gsub-table.hh
@@ -138,7 +138,7 @@
     + hb_zip (this+coverage, substitute)
     | hb_filter (*c->glyphs, hb_first)
     | hb_map (hb_second)
-    | hb_sink (*c->output)
+    | hb_sink (c->output)
     ;
   }
 
@@ -147,7 +147,7 @@
     if (unlikely (!(this+coverage).add_coverage (c->input))) return;
     + hb_zip (this+coverage, substitute)
     | hb_map (hb_second)
-    | hb_sink (*c->output)
+    | hb_sink (c->output)
     ;
   }
 
@@ -1023,7 +1023,7 @@
     + hb_zip (this+coverage, substitute)
     | hb_filter (*c->glyphs, hb_first)
     | hb_map (hb_second)
-    | hb_sink (*c->output)
+    | hb_sink (c->output)
     ;
   }