summaryrefslogtreecommitdiff
path: root/cli/ops/process.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops/process.rs')
-rw-r--r--cli/ops/process.rs16
1 files changed, 9 insertions, 7 deletions
diff --git a/cli/ops/process.rs b/cli/ops/process.rs
index 096b09bd0..980147832 100644
--- a/cli/ops/process.rs
+++ b/cli/ops/process.rs
@@ -26,13 +26,15 @@ fn clone_file(rid: u32, state: &State) -> Result<std::fs::File, OpError> {
.resource_table
.get_mut::<StreamResourceHolder>(rid)
.ok_or_else(OpError::bad_resource_id)?;
- let file = match repr_holder.resource {
- StreamResource::FsFile(ref mut file, _) => file,
- _ => return Err(OpError::bad_resource_id()),
- };
- let tokio_file = futures::executor::block_on(file.try_clone())?;
- let std_file = futures::executor::block_on(tokio_file.into_std());
- Ok(std_file)
+ match repr_holder.resource {
+ StreamResource::FsFile(Some((ref mut file, _))) => {
+ let tokio_file = futures::executor::block_on(file.try_clone())?;
+ let std_file = futures::executor::block_on(tokio_file.into_std());
+ Ok(std_file)
+ }
+ StreamResource::FsFile(None) => Err(OpError::resource_unavailable()),
+ _ => Err(OpError::bad_resource_id()),
+ }
}
fn subprocess_stdio_map(s: &str) -> std::process::Stdio {