Package: cmt Version: 1.15-3.1 Followup-For: Bug #324529
Here is the patch to fix this issue. -- System Information: Debian Release: 4.0 APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: i386 (i686) Shell: /bin/sh linked to /bin/bash Kernel: Linux 2.6.17-2-686 Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1) Versions of packages cmt depends on: ii libc6 2.3.6.ds1-11 GNU C Library: Shared libraries ii libgcc1 1:4.1.1-21 GCC support library ii libstdc++6 4.1.1-21 The GNU Standard C++ Library v3 cmt recommends no packages. -- no debconf information
diff -ruN cmt-1.15/src/freeverb/Components/allpass.h cmt-1.15-new/src/freeverb/Components/allpass.h --- cmt-1.15/src/freeverb/Components/allpass.h 2007-03-06 09:41:40.000000000 +0200 +++ cmt-1.15-new/src/freeverb/Components/allpass.h 2007-03-06 09:29:38.000000000 +0200 @@ -33,7 +33,7 @@ float bufout; bufout = buffer[bufidx]; - undenormalise(&bufout); + bufout = undenormalise(bufout); output = -input + bufout; buffer[bufidx] = input + (bufout*feedback); diff -ruN cmt-1.15/src/freeverb/Components/comb.h cmt-1.15-new/src/freeverb/Components/comb.h --- cmt-1.15/src/freeverb/Components/comb.h 2007-03-06 09:41:40.000000000 +0200 +++ cmt-1.15-new/src/freeverb/Components/comb.h 2007-03-06 09:30:13.000000000 +0200 @@ -38,10 +38,10 @@ float output; output = buffer[bufidx]; - undenormalise(&output); + output = undenormalise(output); filterstore = (output*damp2) + (filterstore*damp1); - undenormalise(&filterstore); + filterstore = undenormalise(filterstore); buffer[bufidx] = input + (filterstore*feedback); diff -ruN cmt-1.15/src/freeverb/Components/denormals.h cmt-1.15-new/src/freeverb/Components/denormals.h --- cmt-1.15/src/freeverb/Components/denormals.h 2007-03-06 09:41:40.000000000 +0200 +++ cmt-1.15-new/src/freeverb/Components/denormals.h 2007-03-06 09:29:18.000000000 +0200 @@ -8,10 +8,10 @@ #ifndef _denormals_ #define _denormals_ -static void inline undenormalise(float *sample) +static float inline undenormalise(volatile float s) { - if (((*(unsigned int*)sample) & 0x7f800000) == 0) - *sample = 0.0f; + s += 9.8607615E-32f; + return s - 9.8607615E-32f; } #endif//_denormals_