fix: Ignore unsupported errors when trying to flush saved files to disk (#12723)

Charles Duffy 2025-07-18 17:25:37 -05:00
parent 4418e338e8
commit 8b2f5834a6
No known key found for this signature in database
GPG Key ID: 951ECD0EF7F697D9
1 changed files with 15 additions and 1 deletions

View File

@ -1065,7 +1065,21 @@ impl Document {
let write_result: anyhow::Result<_> = async {
let mut dst = tokio::fs::File::create(&write_path).await?;
to_writer(&mut dst, encoding_with_bom_info, &text).await?;
dst.sync_all().await?;
// Ignore ENOTSUP/EOPNOTSUPP (Operation not supported) errors from sync_all()
// This is known to occur on SMB filesystems on macOS where fsync is not supported
if let Err(e) = dst.sync_all().await {
#[cfg(target_os = "macos")]
{
match e.raw_os_error() {
Some(45) | Some(102) => {}, // ENOTSUP or EOPNOTSUPP - ignore
_ => return Err(e.into()),
}
}
#[cfg(not(target_os = "macos"))]
{
return Err(e.into());
}
}
Ok(())
}
.await;