diff --git a/erts/emulator/beam/erl_unicode.c b/erts/emulator/beam/erl_unicode.c index 970ca89bd9c0..55ecca303c90 100644 --- a/erts/emulator/beam/erl_unicode.c +++ b/erts/emulator/beam/erl_unicode.c @@ -188,7 +188,7 @@ static Sint aligned_binary_size(Eterm binary) Uint size = bitstring_size(binary); if (TAIL_BITS(size) == 0 && size <= ERTS_SINT_MAX) { - return (Sint)size; + return (Sint)BYTE_SIZE(size); } return -1; diff --git a/lib/stdlib/test/unicode_SUITE.erl b/lib/stdlib/test/unicode_SUITE.erl index 1edc8a7d8d2a..ca5b33c5e72d 100644 --- a/lib/stdlib/test/unicode_SUITE.erl +++ b/lib/stdlib/test/unicode_SUITE.erl @@ -36,7 +36,8 @@ ex_binaries_errors_utf32_big/1, normalize/1, huge_illegal_code_points/1, - error_info/1 + error_info/1, + bin_is_7bit/1 ]). suite() -> @@ -51,7 +52,8 @@ all() -> normalize, {group,binaries_errors}, huge_illegal_code_points, - error_info]. + error_info, + bin_is_7bit]. groups() -> [{binaries_errors,[parallel], @@ -1454,6 +1456,11 @@ error_info(_Config) -> ], error_info_lib:test_error_info(unicode, L). +bin_is_7bit(_Config) -> + true = unicode:bin_is_7bit(<<"d"/utf8>>), + false = unicode:bin_is_7bit(<<"รถ"/utf8>>), + ok. + %%% %%% Utilities. %%%