mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 00:35:38 +08:00
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.
This commit is contained in:
@@ -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)
|
||||
let _ = writer.write(
|
||||
now,
|
||||
&Record::builder()
|
||||
.args(format_args!("{}", &*leaked))
|
||||
.level(level)
|
||||
.target("sidecar")
|
||||
.build();
|
||||
let _ = writer.write(now, &record);
|
||||
.build(),
|
||||
);
|
||||
}
|
||||
// SAFETY: `leaked` originated from `Box::leak` above; reboxing frees it immediately after use.
|
||||
unsafe { String::from(Box::from_raw(leaked_ptr)) }
|
||||
|
||||
Reference in New Issue
Block a user