From 18c5ee6bce5f0fd08c3c72016de43654ad28823e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=88=B1=E7=89=B9=E6=AF=8F=E7=BE=8A=E9=98=9F?= Date: Sun, 28 Jun 2026 18:28:16 +0800 Subject: [PATCH] refactor(array): prepare array_ptr_len! for ArrayLike extension Co-Authored-By: Claude Opus 4.8 (cherry picked from commit a3b914df3c985388d6540f5970711be408ee81c7) --- crates/oxide_builtins/src/array.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/crates/oxide_builtins/src/array.rs b/crates/oxide_builtins/src/array.rs index a7534b1..a96ef97 100644 --- a/crates/oxide_builtins/src/array.rs +++ b/crates/oxide_builtins/src/array.rs @@ -21,8 +21,14 @@ macro_rules! array_ptr { macro_rules! array_ptr_len { ($vm:expr, $args:expr) => {{ - let arr_ptr = array_ptr!($vm, $args); - let len = unsafe { (*arr_ptr).prop_count() } as usize; + let this_val = $vm.reg($args[0]); + let (arr_ptr, len, _is_arr) = match get_this_arraylike($vm, this_val) { + Ok(v) => v, + Err(err) => { + builtins_error!("Array method: invalid receiver"); + return NativeResult::Err(err); + } + }; (arr_ptr, len) }}; }