mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-10-10 22:38:44 +02:00
fix(fs): return an error when Android returns no file descriptor (#3636)
In plugins/fs/src/android.rs resolve_content_uri, a null `fd` from getFileDescriptor (openAssetFileDescriptor returning null, e.g. for virtual files) hit unimplemented!() and panicked inside the command handler. It now returns an Unsupported I/O error. Also switches the two io::Error::new(Other, ..) calls to io::Error::other, which clippy flags on the Android target. Checked with cargo clippy --target aarch64-linux-android.
This commit is contained in:
1 parent
5de7ebfc95
commit
085a02835d
2 files changed
+13
-2
No files matched your search
@@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
fs: patch
|
||||||
|
fs-js: patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fixed a panic on Android when a content provider returns no file descriptor for a `content://` URI (e.g. virtual files). The fs command now fails with an error instead.
|
||||||
@@ -63,10 +63,11 @@ impl<R: Runtime> Fs<R> {
|
|||||||
uri: impl Into<String>,
|
uri: impl Into<String>,
|
||||||
mode: impl Into<String>,
|
mode: impl Into<String>,
|
||||||
) -> crate::Result<std::fs::File> {
|
) -> crate::Result<std::fs::File> {
|
||||||
|
let uri = uri.into();
|
||||||
let result = self.0.run_mobile_plugin::<GetFileDescriptorResponse>(
|
let result = self.0.run_mobile_plugin::<GetFileDescriptorResponse>(
|
||||||
"getFileDescriptor",
|
"getFileDescriptor",
|
||||||
GetFileDescriptorPayload {
|
GetFileDescriptorPayload {
|
||||||
uri: uri.into(),
|
uri: uri.clone(),
|
||||||
mode: mode.into(),
|
mode: mode.into(),
|
||||||
},
|
},
|
||||||
)?;
|
)?;
|
||||||
@@ -76,7 +77,11 @@ impl<R: Runtime> Fs<R> {
|
|||||||
std::fs::File::from_raw_fd(fd)
|
std::fs::File::from_raw_fd(fd)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
unimplemented!()
|
// the content provider did not return a file descriptor, e.g. for virtual files
|
||||||
|
Err(crate::Error::Io(std::io::Error::new(
|
||||||
|
std::io::ErrorKind::Unsupported,
|
||||||
|
format!("no file descriptor available for {uri}"),
|
||||||
|
)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user