LibWeb: Don't crash on Element.setAttribute() with emoji in name

We were mistakenly using StringBuilder's append(char) when we really
wanted append_code_point(u32).
This commit is contained in:
Andreas Kling 2023-12-03 23:20:33 +01:00
parent dbca63a1db
commit 1b81e0081d
3 changed files with 10 additions and 1 deletions

View file

@ -0,0 +1 @@
PASS (Didn't crash)

View file

@ -0,0 +1,8 @@
<script src="../include.js"></script>
<script>
test(() => {
const e = document.createElement("div");
e.setAttribute("🧐", "");
println("PASS (Didn't crash)");
});
</script>

View file

@ -99,7 +99,7 @@ ErrorOr<String> to_ascii_lowercase(StringView string)
auto utf8_view = Utf8View { string }; auto utf8_view = Utf8View { string };
for (u32 code_point : utf8_view) { for (u32 code_point : utf8_view) {
code_point = AK::to_ascii_lowercase(code_point); code_point = AK::to_ascii_lowercase(code_point);
TRY(string_builder.try_append(code_point)); string_builder.append_code_point(code_point);
} }
return string_builder.to_string(); return string_builder.to_string();
} }