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_