From 86a76c06616527fb3d6305c1069d167204628f9e Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 9 Sep 2025 21:08:33 -0400 Subject: Compact lists when appropriate --- src/stdlib/text.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/stdlib/text.c b/src/stdlib/text.c index 76377321..d1273339 100644 --- a/src/stdlib/text.c +++ b/src/stdlib/text.c @@ -1361,6 +1361,7 @@ public Text_t Text$upper(Text_t text, Text_t language) { if (text.length == 0) return text; List_t codepoints = Text$utf32(text); + if (codepoints.stride != sizeof(int32_t)) List$compact(&codepoints, sizeof(int32_t)); const char *uc_language = Text$as_c_string(language); size_t out_len = 256; uint32_t buf[out_len]; @@ -1376,6 +1377,7 @@ public Text_t Text$lower(Text_t text, Text_t language) { if (text.length == 0) return text; List_t codepoints = Text$utf32(text); + if (codepoints.stride != sizeof(int32_t)) List$compact(&codepoints, sizeof(int32_t)); const char *uc_language = Text$as_c_string(language); size_t out_len = 256; uint32_t buf[out_len]; @@ -1391,6 +1393,7 @@ public Text_t Text$title(Text_t text, Text_t language) { if (text.length == 0) return text; List_t codepoints = Text$utf32(text); + if (codepoints.stride != sizeof(int32_t)) List$compact(&codepoints, sizeof(int32_t)); const char *uc_language = Text$as_c_string(language); size_t out_len = 256; uint32_t buf[out_len]; @@ -1633,7 +1636,8 @@ List_t Text$codepoint_names(Text_t text) { public OptionalText_t Text$from_utf8(List_t units) { - if (units.stride != sizeof(int8_t)) List$compact(&units, sizeof(int8_t)); + if (units.length == 0) return EMPTY_TEXT; + if (units.stride != sizeof(uint8_t)) List$compact(&units, sizeof(uint8_t)); return Text$from_strn(units.data, (size_t)units.length); } -- cgit v1.2.3