Created attachment 13991 [details]
When using cairo defining CAIRO_FIXED_FRAC_BITS as 8 in cairo-fixed-private.h I am hitting an infinite loop with the next test case (that works fine using 16bits):
cr = gdk_cairo_create (widget->window);
cairo_scale (cr, 1, 0.0001);
cairo_translate (cr, 1, 0.0001);
cairo_move_to (cr, 44.12, 106);
cairo_curve_to (cr, 43.946765, 93.855989, 38.653008,89.286968,26,90);
it loops inside _cairo_pen_stroke_spline_half because the step never increases.
The test case looks like the degenerate-pen that was fixed in 1.5.2 - but that is earlier than this report. However, the bug is unreproducible now with 1.8.0 which uses 24.8 fixed point.