https://bugs.winehq.org/show_bug.cgi?id=57306
--- Comment #68 from Rafał Mużyło galtgendo@o2.pl --- (In reply to Fabian Maurer from comment #66)
So, I found an issue. Not sure if it's the same as yours, but it might have the same roots.
const double a = (hsq * xform->eM11 * xform->eM11) + (wsq * xform->eM12 * xform->eM12); ... const double d = (hsq * wsq); ... pt.x = -sqrt(d / a); ... while (pt.y > 0 || (pt.y == 0 && pt.x != -start_x))
When pt.x is 0, the functions returns a count of 0, leading to the assertion and crash. No idea how to fix this though...
If pt.x is 0, then either width or height is 0, so there's nothing to draw, so we shouldn't be in this function in the first place.
As such, a proposition - let's cut this shit at the earliest opportunity:
in draw_arc right after width and height are calculated, let's just add
if (!(width*height)) return TRUE;
Unless this code is actually do anything when the passed rectangle has 0 width/height, that seems a sane solution, doesn't it ?