summaryrefslogtreecommitdiff
path: root/src/runtime.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime.c')
-rw-r--r--src/runtime.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/runtime.c b/src/runtime.c
index a77fbf4..6f3759f 100644
--- a/src/runtime.c
+++ b/src/runtime.c
@@ -212,10 +212,14 @@ double pit_as_double(pit_runtime *rt, pit_value v) {
pit_error(rt, "invalid use of value as double");
return 0.0;
}
- return (double) v;
+ union { double dval; u64 ival; } x;
+ x.ival = v;
+ return x.dval;
}
pit_value pit_double_new(pit_runtime *rt, double d) {
- return pit_value_new(rt, PIT_VALUE_SORT_DOUBLE, (u64) d);
+ union { double dval; u64 ival; } x;
+ x.dval = d;
+ return pit_value_new(rt, PIT_VALUE_SORT_DOUBLE, x.ival);
}
i64 pit_as_integer(pit_runtime *rt, pit_value v) {