From 0c31cf49c070110462f15791da161847f74a5245 Mon Sep 17 00:00:00 2001 From: Oskar Wallgren Date: Fri, 3 Nov 2017 09:41:28 +0100 Subject: [PATCH] linearToLogScale() - Input validation (#3932) --- include/lmms_math.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/lmms_math.h b/include/lmms_math.h index b1b01be27..ccf5fbf62 100644 --- a/include/lmms_math.h +++ b/include/lmms_math.h @@ -229,11 +229,12 @@ static inline float logToLinearScale( float min, float max, float value ) static inline float linearToLogScale( float min, float max, float value ) { static const float EXP = 1.0f / F_E; - const float val = ( value - min ) / ( max - min ); + const float valueLimited = qBound( min, value, max); + const float val = ( valueLimited - min ) / ( max - min ); if( min < 0 ) { const float mmax = qMax( qAbs( min ), qAbs( max ) ); - float result = signedPowf( value / mmax, EXP ) * mmax; + float result = signedPowf( valueLimited / mmax, EXP ) * mmax; return isnan( result ) ? 0 : result; } float result = powf( val, EXP ) * ( max - min ) + min;