From 4d84803ac2cc300242d8846f2f1e93acaf4ab43d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20H=C3=B6gberg?= Date: Wed, 19 Feb 2025 09:21:16 +0100 Subject: [PATCH] erts: Restore an optimization in unicode:characters_to_binary/1,3 --- erts/emulator/beam/erl_unicode.c | 2 +- lib/stdlib/test/unicode_SUITE.erl | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) 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. %%%