[Pixman] Fwd: make error on pixman library
Søren Sandmann
sandmann at cs.au.dk
Sat Dec 15 07:42:25 PST 2012
Søren Sandmann <sandmann at cs.au.dk> writes:
>> /bin/bash: line 5: 5532 Floating point exception${dir}$tst
>> FAIL: combiner-test
I managed to reproduce this using the -m32 option to gcc. The problem is
a divide-by-zero in blend_color_dodge():
static force_inline float
blend_color_dodge (float sa, float s, float da, float d)
{
if (d == 0.0f)
return 0.0f;
else if (d * sa >= sa * da - s * da)
return sa * da;
else if (sa - s == 0.0f)
return sa * da;
else
return sa * sa * d / (sa - s);
}
The division is guarded by
if (sa - s == 0.0f)
....;
else
.... / (sa - s);
which in theory should be correct, but isn't with the combination of x87
and gcc optimizations. The following patch fixes the issue by changing
the comparision for equality with zero into a comparision for the
interval -FLT_MIN, FLT_MIN.
Søren
More information about the Pixman
mailing list