Skip to content

Commit b1b6044

Browse files
committed
Remove nested loop to strip ansi codes
because handling of Err(_) and Ok(0) might be tricky otherwise, so we just use a boolean flag Signed-off-by: phaer <[email protected]>
1 parent c665fcd commit b1b6044

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/reader.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ impl NBReader {
136136
thread::spawn(move || -> Result<(), Error> {
137137
let mut reader = BufReader::new(f);
138138
let mut byte = [0u8];
139+
let mut in_escape_code = false;
139140

140141
loop {
141142
match reader.read(&mut byte) {
@@ -146,10 +147,10 @@ impl NBReader {
146147
}
147148
Ok(_) => {
148149
if options.strip_ansi_escape_codes && byte[0] == 27 {
149-
while let Ok(_) = reader.read(&mut byte) {
150-
if char::from(byte[0]).is_alphabetic() {
151-
break;
152-
}
150+
in_escape_code = true;
151+
} else if options.strip_ansi_escape_codes && in_escape_code {
152+
if char::from(byte[0]).is_alphabetic() {
153+
in_escape_code = false;
153154
}
154155
} else {
155156
tx.send(Ok(PipedChar::Char(byte[0])))

0 commit comments

Comments
 (0)