diff --git a/Cargo.lock b/Cargo.lock index 09b6cf7..a0e003f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3103,9 +3103,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.39.6" +version = "0.40.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" +checksum = "0e8a3edbe0394ce115f3917a00349dd242be09eb5a091ed509eaf67b55cfb8a8" dependencies = [ "libc", "memchr", diff --git a/Cargo.toml b/Cargo.toml index e9ba601..fe450ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ rusqlite = { version = "0.40", features = ["bundled"] } thiserror = "2" dirs = "7" chrono = "0.4" -sysinfo = "0.39" +sysinfo = "0.40" [profile.release] strip = true diff --git a/crates/zsm-core/src/lib.rs b/crates/zsm-core/src/lib.rs index 9d2323d..8f719e2 100644 --- a/crates/zsm-core/src/lib.rs +++ b/crates/zsm-core/src/lib.rs @@ -41,10 +41,15 @@ pub fn zcode_running() -> bool { _ => {} } use sysinfo::System; - let sys = System::new_all(); let self_pid = std::process::id(); - sys.processes().iter().any(|(pid, p)| { - pid.as_u32() != self_pid - && p.name().to_string_lossy().to_lowercase().contains("zcode") - }) + // sysinfo 0.40: new_all() returns Result. Fail safe — if we cannot list + // processes, assume ZCode is running so destructive operations stay blocked. + System::new_all() + .map(|sys| { + sys.processes().iter().any(|(pid, p)| { + pid.as_u32() != self_pid + && p.name().to_string_lossy().to_lowercase().contains("zcode") + }) + }) + .unwrap_or(true) }