mirror of https://github.com/helix-editor/helix
fix erroneous write sender close
This was not distinguishing the error types when trying a receive on an empty receiver, which was erroneously causing the sender to be closed when trying to flush the writes when there were nonepull/2267/head
parent
d544376590
commit
7b11e9ac69
|
@ -13,6 +13,7 @@ use std::future::Future;
|
|||
use std::path::{Path, PathBuf};
|
||||
use std::str::FromStr;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::mpsc::error::TryRecvError;
|
||||
use tokio::sync::mpsc::{UnboundedReceiver, UnboundedSender};
|
||||
|
||||
use tokio::sync::Mutex;
|
||||
|
@ -662,7 +663,16 @@ impl Document {
|
|||
let save_req = if block {
|
||||
rx.recv().await
|
||||
} else {
|
||||
rx.try_recv().ok()
|
||||
let msg = rx.try_recv();
|
||||
|
||||
if let Err(err) = msg {
|
||||
match err {
|
||||
TryRecvError::Empty => return None,
|
||||
TryRecvError::Disconnected => None,
|
||||
}
|
||||
} else {
|
||||
msg.ok()
|
||||
}
|
||||
};
|
||||
|
||||
let save = match save_req {
|
||||
|
|
Loading…
Reference in New Issue