mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-10-29 05:40:23 -04:00
tests: Fix test-suite failure on Alpha
Pulseaudio fails to build on the Alpha architecture due to a failure in the volume-test of the test suite. I had reported this to the Debian bug tracker [1] but the maintainer has asked that I forward the patch to this mail list. The failure in volume-test occurs because it is compiled with -ffast-math which implies -ffinite-math-only of which the gcc manual states that it optimizes for floating-point arithmetic with the assumption that arguments and results are not NaNs or +/-infinity, and futher notes that it may result in incorrect output. On the Alpha platform that is somewhat an understatement as the use of non-finite floating-point arithmetic with -ffinite-math-only results in a floating-point exception and the termination of the program. The volume-test converts volumes into decibels (so a zero volume becomes a negative infinity) and proceeds to add two volumes (in decibels), thus does arithmetic with non-finite floating point numbers despite being compiled with -ffast-math! I attach a patch that protects against the arithmetic with non-finite numbers for your consideration. With that patch the test-suite passes on Alpha. Cheers Michael. [1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=798248
This commit is contained in:
parent
76e2cec9a2
commit
392060d0fc
1 changed files with 4 additions and 1 deletions
|
|
@ -114,7 +114,10 @@ START_TEST (volume_test) {
|
|||
double q, qq;
|
||||
|
||||
p = pa_sw_volume_multiply(v, w);
|
||||
qq = db + db2;
|
||||
if (isfinite(db) && isfinite(db2))
|
||||
qq = db + db2;
|
||||
else
|
||||
qq = -INFINITY;
|
||||
p2 = pa_sw_volume_from_dB(qq);
|
||||
q = l*t;
|
||||
p1 = pa_sw_volume_from_linear(q);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue