From 58bd2032f3f82cb93719c519ca2dab12885c2b7e Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Thu, 9 Oct 2025 18:41:09 +0800 Subject: [PATCH] refactor(sidecar): inline Record construction for safer logging - Build Record inline so fmt::Arguments temporary only lives through writer.write, avoiding dropped-temporary borrow. - Add explicit 'static annotation on leaked string before reboxing for clarity. --- src-tauri/src/core/core.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src-tauri/src/core/core.rs b/src-tauri/src/core/core.rs index 2728276c9..61ca47970 100644 --- a/src-tauri/src/core/core.rs +++ b/src-tauri/src/core/core.rs @@ -64,16 +64,17 @@ fn write_sidecar_log( message: String, ) -> String { let boxed = message.into_boxed_str(); - let leaked = Box::leak(boxed); + let leaked: &'static mut str = Box::leak(boxed); let leaked_ptr = leaked as *mut str; - let args = format_args!("{}", leaked); { - let record = Record::builder() - .args(args) - .level(level) - .target("sidecar") - .build(); - let _ = writer.write(now, &record); + let _ = writer.write( + now, + &Record::builder() + .args(format_args!("{}", &*leaked)) + .level(level) + .target("sidecar") + .build(), + ); } // SAFETY: `leaked` originated from `Box::leak` above; reboxing frees it immediately after use. unsafe { String::from(Box::from_raw(leaked_ptr)) }