From ed442259a6a914cc3778d902a38d27fdfb87bb3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20H=C3=B6gberg?= Date: Thu, 10 Jan 2019 10:00:51 +0100 Subject: Fix passing large integers as base to integer_to_X/2 I noticed this seconds after merging... :( --- erts/emulator/beam/bif.c | 6 +++--- erts/emulator/beam/binary.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/erts/emulator/beam/bif.c b/erts/emulator/beam/bif.c index f1fac7f8d0..457910f913 100644 --- a/erts/emulator/beam/bif.c +++ b/erts/emulator/beam/bif.c @@ -2886,13 +2886,13 @@ BIF_RETTYPE integer_to_list_1(BIF_ALIST_1) BIF_RETTYPE integer_to_list_2(BIF_ALIST_2) { Eterm res; - int base; + SWord base; - if (is_not_integer(BIF_ARG_1) || is_not_integer(BIF_ARG_2)) { + if (is_not_integer(BIF_ARG_1) || is_not_small(BIF_ARG_2)) { BIF_ERROR(BIF_P, BADARG); } - base = unsigned_val(BIF_ARG_2); + base = signed_val(BIF_ARG_2); if (base < 2 || base > 36) { BIF_ERROR(BIF_P, BADARG); } diff --git a/erts/emulator/beam/binary.c b/erts/emulator/beam/binary.c index 5f090e89d7..a18228b84a 100644 --- a/erts/emulator/beam/binary.c +++ b/erts/emulator/beam/binary.c @@ -390,13 +390,13 @@ BIF_RETTYPE integer_to_binary_1(BIF_ALIST_1) BIF_RETTYPE integer_to_binary_2(BIF_ALIST_2) { Eterm res; - int base; + SWord base; - if (is_not_integer(BIF_ARG_1) || is_not_integer(BIF_ARG_2)) { + if (is_not_integer(BIF_ARG_1) || is_not_small(BIF_ARG_2)) { BIF_ERROR(BIF_P, BADARG); } - base = unsigned_val(BIF_ARG_2); + base = signed_val(BIF_ARG_2); if (base < 2 || base > 36) { BIF_ERROR(BIF_P, BADARG); } -- cgit v1.2.3