From 0a34deef4d824884e73a93400b854399f7fde4ba Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Wed, 7 Jun 2017 12:57:01 +0200 Subject: Fix integer division 0/-1 == -0.0 in JS, which cannot be encoded in an int. Change-Id: Ice5b09fa3d42dc24d543d4581d77c6bfa743b2ca Reviewed-by: Simon Hausmann Reviewed-by: Lars Knoll --- src/qml/jsruntime/qv4runtime.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/qml/jsruntime') diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp index 37a2bfdf90..ecf2fd8b11 100644 --- a/src/qml/jsruntime/qv4runtime.cpp +++ b/src/qml/jsruntime/qv4runtime.cpp @@ -1706,7 +1706,9 @@ ReturnedValue Runtime::method_div(const Value &left, const Value &right) if (Value::integerCompatible(left, right)) { int lval = left.integerValue(); int rval = right.integerValue(); - if (rval != 0 && (lval % rval == 0)) + if (rval != 0 // division by zero should result in a NaN + && (lval % rval == 0) // fractions can't be stored in an int + && !(lval == 0 && rval < 0)) // 0 / -something results in -0.0 return Encode(int(lval / rval)); else return Encode(double(lval) / rval); -- cgit v1.2.3