Changed paths:
M Lib/fontTools/ttLib/tables/_g_l_y_f.py
M Tests/ttLib/tables/_g_l_y_f_test.py
Log Message:
-----------
Raise TTLibError on recursive components in recalcBounds fast path
Glyph.recalcBounds()'s integer-translate fast path
(tryRecalcBoundsComposite) recursed without bound on composite glyphs with
a cyclic component reference, letting a raw RecursionError escape to the
caller. The slow path, Glyph.getCoordinates(), already catches
RecursionError and re-raises it as TTLibError('glyph X contains a recursive
component reference'); the fast path simply omitted that guard. Wrap the
recursive recalcBounds call the same way so both paths behave identically.