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,
|
message: String,
|
||||||
) -> String {
|
) -> String {
|
||||||
let boxed = message.into_boxed_str();
|
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 leaked_ptr = leaked as *mut str;
|
||||||
let args = format_args!("{}", leaked);
|
|
||||||
{
|
{
|
||||||
let record = Record::builder()
|
let _ = writer.write(
|
||||||
.args(args)
|
now,
|
||||||
|
&Record::builder()
|
||||||
|
.args(format_args!("{}", &*leaked))
|
||||||
.level(level)
|
.level(level)
|
||||||
.target("sidecar")
|
.target("sidecar")
|
||||||
.build();
|
.build(),
|
||||||
let _ = writer.write(now, &record);
|
);
|
||||||
}
|
}
|
||||||
// SAFETY: `leaked` originated from `Box::leak` above; reboxing frees it immediately after use.
|
// SAFETY: `leaked` originated from `Box::leak` above; reboxing frees it immediately after use.
|
||||||
unsafe { String::from(Box::from_raw(leaked_ptr)) }
|
unsafe { String::from(Box::from_raw(leaked_ptr)) }
|
||||||
|
|||||||
Reference in New Issue
Block a user