From c4d3030d24d25f7fa8ea30fc108dc7df415fbc02 Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Wed, 30 Oct 2013 17:10:38 +0100
Subject: CrossFade: eliminate NaN from mixramp_interpolate()

Use a boolean flag instead.
---
 src/CrossFade.cxx | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/CrossFade.cxx b/src/CrossFade.cxx
index 8e6baf885..601d74dc2 100644
--- a/src/CrossFade.cxx
+++ b/src/CrossFade.cxx
@@ -25,8 +25,6 @@
 #include "util/Domain.hxx"
 #include "Log.hxx"
 
-#include <cmath>
-
 #include <assert.h>
 #include <string.h>
 #include <stdlib.h>
@@ -37,7 +35,8 @@ gcc_pure
 static float
 mixramp_interpolate(const char *ramp_list, float required_db)
 {
-	float last_db = nan(""), last_secs = 0;
+	float last_db = 0, last_secs = 0;
+	bool have_last = false;
 
 	/* ramp_list is a string of pairs of dBs and seconds that describe the
 	 * volume profile. Delimiters are semi-colons between pairs and spaces
@@ -71,11 +70,12 @@ mixramp_interpolate(const char *ramp_list, float required_db)
 		if (db < required_db) {
 			last_db = db;
 			last_secs = secs;
+			have_last = true;
 			continue;
 		}
 
 		/* If required db < any stored value, use the least. */
-		if (std::isnan(last_db))
+		if (!have_last)
 			return secs;
 
 		/* Finally, interpolate linearly. */
-- 
cgit v1.2.3