From fe89946fdc61bf88cf0220c0f57d25e3b49e970f Mon Sep 17 00:00:00 2001 From: Adrian Siekierka Date: Sat, 3 Jun 2023 19:33:12 +0200 Subject: [PATCH] more ArgumentsImpl fixes --- .../cil/oc/server/machine/ArgumentsImpl.scala | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala b/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala index 3be3ddea7..b84342239 100644 --- a/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala +++ b/src/main/scala/li/cil/oc/server/machine/ArgumentsImpl.scala @@ -78,7 +78,30 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { throw intError(index, value) } else { value.intValue - } */ + } + case value: java.lang.Number => value.intValue + */ + case value: java.lang.Double => + if (value > java.lang.Integer.MAX_VALUE) + java.lang.Integer.MAX_VALUE + else if (value < java.lang.Integer.MIN_VALUE) + java.lang.Integer.MIN_VALUE + else + value.intValue + case value: java.lang.Float => + if (value > java.lang.Integer.MAX_VALUE) + java.lang.Integer.MAX_VALUE + else if (value < java.lang.Integer.MIN_VALUE) + java.lang.Integer.MIN_VALUE + else + value.intValue + case value: java.lang.Long => + if (value > java.lang.Integer.MAX_VALUE) + java.lang.Integer.MAX_VALUE + else if (value < java.lang.Integer.MIN_VALUE) + java.lang.Integer.MIN_VALUE + else + value.intValue case value: java.lang.Number => value.intValue case value => throw typeError(index, value, "integer") } @@ -104,7 +127,23 @@ class ArgumentsImpl(val args: Seq[AnyRef]) extends Arguments { throw intError(index, value) } else { value.longValue - } */ + } + case value: java.lang.Number => value.longValue + */ + case value: java.lang.Double => + if (value > java.lang.Long.MAX_VALUE) + java.lang.Long.MAX_VALUE + else if (value < java.lang.Long.MIN_VALUE) + java.lang.Long.MIN_VALUE + else + value.longValue + case value: java.lang.Float => + if (value > java.lang.Long.MAX_VALUE) + java.lang.Long.MAX_VALUE + else if (value < java.lang.Long.MIN_VALUE) + java.lang.Long.MIN_VALUE + else + value.longValue case value: java.lang.Number => value.longValue case value => throw typeError(index, value, "integer") }