The RoShade installer crashes because of ole32 trying to release
the OLE drop target from another process (which can't be accessed
despite it being a valid pointer).
Windows probably supports this behavior (but implementing it here
would require extra work and this is enough to make this app work).
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54912
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/4511
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45123
In `gdiplus/graphicspath.c` calculating the Pythagorean addition is needed, which is defined as:
a ⊕ b = sqrt(a^2+b^2)
This is hypotenuse, or the length of the longest side of a right-angled triangle, that we know the other 2 sides, a and b.
https://en.wikipedia.org/wiki/Pythagorean_addition
By using `sqrt(a * a + b * b)`, for large (or small) `a` or `b`, there is a possibility of overflow (underflow),
although the result itself …
[View More]is not that big (small) to cause overflow (underflow).
To overcome this problem, there are implementations of hypotenuse that do not use power of 2,
and use other methods to calculate the result.
To calculate `a ⊕ b`, you can easily use `hypotf(a,b)`.
https://en.cppreference.com/w/cpp/numeric/math/hypot
--
v5: gdiplus/font: Avoid computation overflow and underflow by using hypotf
gdiplus/graphicspath: Avoid computation overflow and underflow by using hypotf.
https://gitlab.winehq.org/wine/wine/-/merge_requests/4475
[View Less]