aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-06-15 08:57:58 +0200
committerLiang Qi <liang.qi@qt.io>2017-06-15 09:10:12 +0200
commit9f3aefb086c5f9d6b9dd192689bdd473da07186a (patch)
tree93349812f4a46305edf5e27f7e737d952e0d9a3a /src/qml/jsruntime
parenta021bd87755ccfbe49e132f942ded935c9719b00 (diff)
parentd2bb2e202427ebae545a408f065c893f3d837061 (diff)
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: src/qml/compiler/qv4codegen.cpp Change-Id: I3c41b9fc9ba7d41741e4dd400402ae80dd7726d9
Diffstat (limited to 'src/qml/jsruntime')
-rw-r--r--src/qml/jsruntime/qv4runtime.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/qml/jsruntime/qv4runtime.cpp b/src/qml/jsruntime/qv4runtime.cpp
index df2af9de40..9737a18812 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);