summaryrefslogtreecommitdiff
path: root/Libraries/LibJS/Runtime/Value.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LibJS/Runtime/Value.cpp')
-rw-r--r--Libraries/LibJS/Runtime/Value.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/Libraries/LibJS/Runtime/Value.cpp b/Libraries/LibJS/Runtime/Value.cpp
index 901558ecee..13687cb5b3 100644
--- a/Libraries/LibJS/Runtime/Value.cpp
+++ b/Libraries/LibJS/Runtime/Value.cpp
@@ -258,8 +258,14 @@ Value div(Value lhs, Value rhs)
Value mod(Value lhs, Value rhs)
{
- // FIXME: It seems like JavaScript should allow modulo for doubles as well(?)
- return Value(lhs.to_i32() % rhs.to_i32());
+ if (lhs.to_number().is_nan() || rhs.to_number().is_nan())
+ return js_nan();
+
+ double index = lhs.to_number().as_double();
+ double period = rhs.to_number().as_double();
+ double trunc = (double)(i32) (index / period);
+
+ return Value(index - trunc * period);
}
Value typed_eq(Value lhs, Value rhs)