diff --git a/lib/stdlib/src/binary.erl b/lib/stdlib/src/binary.erl index 6231552f851e..bf84737b93ec 100644 --- a/lib/stdlib/src/binary.erl +++ b/lib/stdlib/src/binary.erl @@ -948,6 +948,7 @@ _Example:_ """. -doc(#{since => <<"OTP 27.0">>}). -spec join([binary()], binary()) -> binary(). +join([], _Separator) -> <<>>; join([H], _Separator) -> H; join([H | T], Separator) -> join(T, Separator, H). diff --git a/lib/stdlib/test/binary_module_SUITE.erl b/lib/stdlib/test/binary_module_SUITE.erl index f9abc6e0177c..10fd131a26df 100644 --- a/lib/stdlib/test/binary_module_SUITE.erl +++ b/lib/stdlib/test/binary_module_SUITE.erl @@ -262,7 +262,11 @@ badargs(Config) when is_list(Config) -> badarg = ?MASK_ERROR(binary:encode_hex(foo)), badarg = ?MASK_ERROR(binary:join([<<"a">>], ", ")), - badarg = ?MASK_ERROR(binary:join([], <<",">>)), + badarg = ?MASK_ERROR(binary:join([""], <<",">>)), + badarg = ?MASK_ERROR(binary:join([123], <<",">>)), + badarg = ?MASK_ERROR(binary:join(123, <<",">>)), + badarg = ?MASK_ERROR(binary:join(#{}, <<",">>)), + badarg = ?MASK_ERROR(binary:join(foo, <<",">>)), ok. %% Whitebox test to force special trap conditions in @@ -1588,6 +1592,7 @@ do_hex_roundtrip(Bytes) -> join(Config) when is_list(Config) -> <<"a, b, c">> = binary:join([<<"a">>, <<"b">>, <<"c">>], <<", ">>), <<"a">> = binary:join([<<"a">>], <<", ">>), + <<>> = binary:join([], <<", ">>), badarg = ?MASK_ERROR(binary:join([<<"a">>], ", ")), badarg = ?MASK_ERROR(binary:join([], <<",">>)).