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_

Reply via email to