aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-01-12 22:44:22 -0800
committerRose Hogenson <rosehogenson@posteo.net>2024-01-12 22:44:22 -0800
commit1f02eabb8058f513baf6018329e55e0140021f36 (patch)
tree3c7132c61edd1470ff31a66eb7c0c18c052d4b8e
parent85f93f0de4268333df18bcd9fde6c9b0f74836e2 (diff)
downloadeditor-1f02eabb8058f513baf6018329e55e0140021f36.tar.zst
Handle Interrupted errors during read.
-rw-r--r--src/rope.rs12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/rope.rs b/src/rope.rs
index b5b5f36..485de7f 100644
--- a/src/rope.rs
+++ b/src/rope.rs
@@ -1,4 +1,4 @@
-use std::io::{Read, Write};
+use std::io::{ErrorKind, Read, Write};
use std::rc::Rc;
const MAX_NODE_SIZE: usize = 1024;
@@ -214,7 +214,15 @@ impl Rope {
let mut buf = vec![0; MAX_NODE_SIZE];
let mut rope = Rope::empty();
loop {
- let n = r.read(&mut buf)?;
+ let n = match r.read(&mut buf) {
+ Ok(n) => n,
+ Err(err) => {
+ if err.kind() == ErrorKind::Interrupted {
+ continue;
+ }
+ return Err(err);
+ }
+ };
if n == 0 {
break;
}