mirror of
https://github.com/pjh456/OxideJS.git
synced 2026-10-25 03:01:12 +08:00
fix: 修复 oxide_builtins 整数溢出 panic 点与安全转换
This commit is contained in:
@@ -428,8 +428,9 @@ fn final_sigma_lower(units: &[u16]) -> Vec<u16> {
|
||||
if (0xD800..=0xDBFF).contains(&u) && i + 1 < units.len() && (0xDC00..=0xDFFF).contains(&units[i + 1]) {
|
||||
// 代理对整体解码为码点小写后回写 UTF-16。
|
||||
let cp = (((u as u32) - 0xD800) << 10 | (units[i + 1] as u32 - 0xDC00)) + 0x10000;
|
||||
let c = char::from_u32(cp).expect("合法代理对必解码为合法码点");
|
||||
out.extend(c.to_lowercase().collect::<String>().encode_utf16());
|
||||
if let Some(c) = char::from_u32(cp) {
|
||||
out.extend(c.to_lowercase().collect::<String>().encode_utf16());
|
||||
}
|
||||
i += 2;
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user