fix(macos): avoid treating '/' as file target

This commit is contained in:
Peter Steinberger
2025-12-17 11:36:51 +01:00
parent cf1278295d
commit 6653813cb9
2 changed files with 13 additions and 5 deletions

View File

@@ -116,9 +116,13 @@ final class CanvasManager {
if scheme == "https" || scheme == "http" || scheme == "file" { return url }
}
// Convenience: existing absolute paths resolve as local files.
if trimmed.hasPrefix("/"), FileManager.default.fileExists(atPath: trimmed) {
return URL(fileURLWithPath: trimmed)
// Convenience: existing absolute *file* paths resolve as local files.
// (Avoid treating Canvas routes like "/" as filesystem paths.)
if trimmed.hasPrefix("/") {
var isDir: ObjCBool = false
if FileManager.default.fileExists(atPath: trimmed, isDirectory: &isDir), !isDir.boolValue {
return URL(fileURLWithPath: trimmed)
}
}
return nil

View File

@@ -140,12 +140,16 @@ final class CanvasWindowController: NSWindowController, WKNavigationDelegate, NS
}
}
// Convenience: absolute paths resolve as local files when they exist.
if trimmed.hasPrefix("/"), FileManager.default.fileExists(atPath: trimmed) {
// Convenience: absolute file paths resolve as local files when they exist.
// (Avoid treating Canvas routes like "/" as filesystem paths.)
if trimmed.hasPrefix("/") {
var isDir: ObjCBool = false
if FileManager.default.fileExists(atPath: trimmed, isDirectory: &isDir), !isDir.boolValue {
let url = URL(fileURLWithPath: trimmed)
canvasWindowLogger.debug("canvas load file \(url.absoluteString, privacy: .public)")
self.loadFile(url)
return
}
}
guard let url = CanvasScheme.makeURL(