fix: 修复数组长度与槽位索引截断问题

This commit is contained in:
爱特每羊队
2026-06-08 22:55:52 +08:00
parent 22cbccdf6c
commit e57e140bef
16 changed files with 242 additions and 159 deletions
+4 -4
View File
@@ -13,7 +13,7 @@ fn this_string(vm: &Vm, args: &[u8]) -> String {
fn make_string_array(vm: &mut Vm, parts: &[String]) -> JsValue {
let proto = vm.kernel().builtin_world().array_proto.as_ptr() as *mut JsObject;
let n = parts.len().min(31);
let n = parts.len();
let arr = vm.epoch().alloc(JsObject::new_array(
EMPTY_SHAPE_ID,
JsValue::from_js_object(proto),
@@ -21,11 +21,11 @@ fn make_string_array(vm: &mut Vm, parts: &[String]) -> JsValue {
vm.epoch().bump(),
));
unsafe {
for (i, s) in parts.iter().enumerate().take(n) {
for (i, s) in parts.iter().enumerate() {
let sv = vm.intern(s);
(*arr).set_prop_at(i as u8, sv);
(*arr).set_prop_at(i, sv);
}
(*arr).set_prop_count(n as u8);
(*arr).set_prop_count(n);
}
JsValue::from_js_object(arr)
}