[glyf] Implement depth limit for add_gid_and_children
diff --git a/src/hb-ot-glyf-table.hh b/src/hb-ot-glyf-table.hh
index 124a7d7..0bb9aca 100644
--- a/src/hb-ot-glyf-table.hh
+++ b/src/hb-ot-glyf-table.hh
@@ -795,7 +795,7 @@
     bool get_points_var (hb_codepoint_t glyph,
 			 const int *coords, unsigned int coord_count,
 			 contour_point_vector_t &all_points /* OUT */,
-			 unsigned int depth=0) const
+			 unsigned int depth = 0) const
     {
       if (unlikely (depth++ > HB_MAX_NESTING_LEVEL)) return false;
       contour_point_vector_t points;
@@ -1009,8 +1009,10 @@
     }
 
     void
-    add_gid_and_children (hb_codepoint_t gid, hb_set_t *gids_to_retain) const
+    add_gid_and_children (hb_codepoint_t gid, hb_set_t *gids_to_retain,
+			  unsigned int depth = 0) const
     {
+      if (unlikely (depth++ > HB_MAX_NESTING_LEVEL)) return;
       /* Check if is already visited */
       if (gids_to_retain->has (gid)) return;
 
@@ -1019,7 +1021,7 @@
       hb_bytes_t glyph_bytes = bytes_for_glyph (gid);
       const GlyphHeader &glyph_header = *glyph_bytes.as<GlyphHeader> ();
       for (auto &item : glyph_header.get_composite_iterator (glyph_bytes))
-        add_gid_and_children (item.glyphIndex, gids_to_retain);
+        add_gid_and_children (item.glyphIndex, gids_to_retain, depth);
     }
 
     private: