File otp_src_18.3.4.7-fix-binary_to_integer-2.patch of Package erlang
diff -Ndurp otp_src_18.3.4.7/erts/emulator/beam/big.c otp_src_18.3.4.7-fix-binary_to_integer-2/erts/emulator/beam/big.c
--- otp_src_18.3.4.7/erts/emulator/beam/big.c 2017-11-22 16:56:19.000000000 +0200
+++ otp_src_18.3.4.7-fix-binary_to_integer-2/erts/emulator/beam/big.c 2018-01-17 18:16:29.795767773 +0200
@@ -2569,11 +2569,10 @@ int term_equals_2pow32(Eterm x)
#define IS_VALID_CHARACTER(CHAR,BASE) \
- (CHAR < '0' \
- || (CHAR > ('0' + BASE - 1) \
- && !(BASE > 10 \
- && ((CHAR >= 'a' && CHAR < ('a' + BASE - 10)) \
- || (CHAR >= 'A' && CHAR < ('A' + BASE - 10))))))
+ !(BASE <= 10 ? (CHAR >= '0' && CHAR < ('0' + BASE)) \
+ : ((CHAR >= '0' && CHAR <= '9') || \
+ (CHAR >= 'A' && CHAR < ('A' + BASE - 10)) || \
+ (CHAR >= 'a' && CHAR < ('a' + BASE - 10))))
#define CHARACTER_FROM_BASE(CHAR) \
((CHAR <= '9') ? CHAR - '0' : 10 + ((CHAR <= 'Z') ? CHAR - 'A' : CHAR - 'a'))
#define D_BASE_EXP(BASE) (d_base_exp_lookup[BASE-2])
diff -Ndurp otp_src_18.3.4.7/erts/emulator/test/num_bif_SUITE.erl otp_src_18.3.4.7-fix-binary_to_integer-2/erts/emulator/test/num_bif_SUITE.erl
--- otp_src_18.3.4.7/erts/emulator/test/num_bif_SUITE.erl 2017-11-22 16:56:19.000000000 +0200
+++ otp_src_18.3.4.7-fix-binary_to_integer-2/erts/emulator/test/num_bif_SUITE.erl 2018-01-17 18:17:41.258841432 +0200
@@ -438,7 +438,7 @@ t_string_to_integer(Config) when is_list
list_to_binary(Value),Base)),
{'EXIT', {badarg, _}} =
(catch erlang:list_to_integer(Value,Base))
- end,[{" 1",1},{" 1",37},{"2",2},{"C",11},
+ end,[{" 1",1},{" 1",37},{"2",2},{"B",11},{"b",11},{":", 16},
{"1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111z",16},
{"1z111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",16},
{"111z11111111",16}]),