Extend clusters backward in out-buffer
diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc
index c3cf561..38eb95f 100644
--- a/src/hb-buffer.cc
+++ b/src/hb-buffer.cc
@@ -452,10 +452,18 @@
 hb_buffer_t::merge_out_clusters (unsigned int start,
 				 unsigned int end)
 {
+  if (unlikely (start >= end))
+    return;
+
   unsigned int cluster = out_info[start].cluster;
 
   for (unsigned int i = start + 1; i < end; i++)
     cluster = MIN (cluster, out_info[i].cluster);
+
+  /* Extend start */
+  while (start && out_info[start - 1].cluster == out_info[start].cluster)
+    start--;
+
   for (unsigned int i = start; i < end; i++)
     out_info[i].cluster = cluster;
 }