diff --git a/src/core/t-integer.c b/src/core/t-integer.c index f4772133d0..c3cc24206c 100644 --- a/src/core/t-integer.c +++ b/src/core/t-integer.c @@ -274,7 +274,7 @@ case A_TO: val = D_ARG(2); if (IS_DECIMAL(val) || IS_PERCENT(val)) { - if (VAL_DECIMAL(val) < MIN_D64 || VAL_DECIMAL(val) >= MAX_D64) + if (VAL_DECIMAL(val) < MIN_D64 || VAL_DECIMAL(val) >= MAX_D64 || isnan(VAL_DECIMAL(val))) Trap0(RE_OVERFLOW); num = (REBI64)VAL_DECIMAL(val); } diff --git a/src/tests/units/make-test.r3 b/src/tests/units/make-test.r3 index f37f13ab17..9ac8743c3c 100644 --- a/src/tests/units/make-test.r3 +++ b/src/tests/units/make-test.r3 @@ -140,6 +140,14 @@ Rebol [ ;@@ https://github.com/Oldes/Rebol-issues/issues/2099 --assert 302961000000 = to integer! "3.02961E+11" + --test-- "make/to integer! 1.#NaN and 1.#INF" + --assert error? try [to integer! 1.#NaN] + --assert error? try [to integer! 1.#INF] + --assert error? try [to integer! -1.#INF] + --assert error? try [make integer! 1.#NaN] + --assert error? try [make integer! 1.#INF] + --assert error? try [make integer! -1.#INF] + ===end-group=== ===start-group=== "make/to decimal!"