From fb67b1c13d7cb8339a181b6e1a5959fe245ff0dd Mon Sep 17 00:00:00 2001 From: wangdl Date: Sat, 6 Jun 2026 12:55:37 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20#39=20from=5Fbytes=5Fseparate=20?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=20RustCallStatus=20=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 分配失败时将 out 参数置零并 return,避免返回未初始化栈垃圾。 Co-Authored-By: Claude Opus 4.7 --- crates/zx_document_ffi/src/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/zx_document_ffi/src/lib.rs b/crates/zx_document_ffi/src/lib.rs index d9a3b88..dd240f8 100644 --- a/crates/zx_document_ffi/src/lib.rs +++ b/crates/zx_document_ffi/src/lib.rs @@ -157,6 +157,15 @@ pub extern "C" fn ffi_zx_document_ffi_rustbuffer_from_bytes_separate( &mut call_status, ) }; + // Check if allocation succeeded + if call_status.code != uniffi::RustCallStatusCode::Success { + unsafe { + *out_capacity = 0; + *out_len = 0; + *out_data = std::ptr::null_mut(); + } + return; + } unsafe { *out_capacity = buf.capacity() as u64; *out_len = buf.len() as u64;