aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4mathobject.cpp
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-09-07 12:56:22 +0200
committerLars Knoll <lars.knoll@qt.io>2018-09-07 12:42:56 +0000
commit4b72555d0a325a94c73697e8a1a5b56472f83565 (patch)
treefff4f1a5855667fd692f65e7e97069d6e90f1790 /src/qml/jsruntime/qv4mathobject.cpp
parent1e600a94302aa1f6b5f3a639929c496f7215e386 (diff)
Fix a corner case in Math.max()
Change-Id: I9dffaec95b01757fb21466617d055def2edeeb30 Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4mathobject.cpp')
-rw-r--r--src/qml/jsruntime/qv4mathobject.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4mathobject.cpp b/src/qml/jsruntime/qv4mathobject.cpp
index e176235786..2943df2984 100644
--- a/src/qml/jsruntime/qv4mathobject.cpp
+++ b/src/qml/jsruntime/qv4mathobject.cpp
@@ -396,8 +396,10 @@ ReturnedValue MathObject::method_max(const FunctionObject *, const Value *, cons
double mx = -qt_inf();
for (int i = 0, ei = argc; i < ei; ++i) {
double x = argv[i].toNumber();
- if (x > mx || std::isnan(x))
+ if ((x == 0 && mx == x && copySign(1.0, x) == 1.0)
+ || (x > mx) || std::isnan(x)) {
mx = x;
+ }
}
RETURN_RESULT(Encode::smallestNumber(mx));
}