From 86387a918525270362a0a9e25e5334f1d8293932 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 11 Jun 2019 17:18:18 +0100 Subject: [PATCH] Add some error trapping to maths operators --- core/modules/filters/math.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/modules/filters/math.js b/core/modules/filters/math.js index d07192d91..801ebf5ed 100644 --- a/core/modules/filters/math.js +++ b/core/modules/filters/math.js @@ -76,33 +76,33 @@ exports.min = makeNumericBinaryOperator( ); exports.fixed = makeNumericBinaryOperator( - function(a,b) {return Number.prototype.toFixed.call(a,b);} + function(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));} ); exports.precision = makeNumericBinaryOperator( - function(a,b) {return Number.prototype.toPrecision.call(a,b);} + function(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));} ); exports.exponential = makeNumericBinaryOperator( - function(a,b) {return Number.prototype.toExponential.call(a,b);} + function(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));} ); -exports.sum = makeNumericArrayOperator( +exports.sum = makeNumericReducingOperator( function(accumulator,value) {return accumulator + value}, 0 // Initial value ); -exports.product = makeNumericArrayOperator( +exports.product = makeNumericReducingOperator( function(accumulator,value) {return accumulator * value}, 1 // Initial value ); -exports.maxall = makeNumericArrayOperator( +exports.maxall = makeNumericReducingOperator( function(accumulator,value) {return Math.max(accumulator,value)}, -Infinity // Initial value ); -exports.minall = makeNumericArrayOperator( +exports.minall = makeNumericReducingOperator( function(accumulator,value) {return Math.min(accumulator,value)}, Infinity // Initial value ); @@ -118,7 +118,7 @@ function makeNumericBinaryOperator(fnCalc) { }; } -function makeNumericArrayOperator(fnCalc,initialValue) { +function makeNumericReducingOperator(fnCalc,initialValue) { initialValue = initialValue || 0; return function(source,operator,options) { var result = [];