Skip to content

Commit 7c59d0c

Browse files
committed
Fix introduced error
Fix introduced error
1 parent 1448ce9 commit 7c59d0c

File tree

1 file changed

+20
-4
lines changed

1 file changed

+20
-4
lines changed

src/libcore/char.rs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -552,21 +552,25 @@ impl Iterator for EscapeDefault {
552552
EscapeDefaultState::Backslash(c) => c,
553553
EscapeDefaultState::Char(c) => c,
554554
EscapeDefaultState::Done => return None,
555-
EscapeDefaultState::Unicode(ref mut i) => return iter.nth(n),
555+
EscapeDefaultState::Unicode(ref mut i) => return i.nth(n),
556556
};
557557

558-
let start = self.get_offset();
558+
let start = if let Some(x) = self.get_offset() {
559+
x
560+
} else {
561+
return None;
562+
};
559563
let idx = start + n;
560564

561565
// Update state
562566
self.state = match idx {
563-
0 => EscapeDefaultState::Char(c),
567+
0 => EscapeDefaultState::Char(ch),
564568
_ => EscapeDefaultState::Done,
565569
};
566570

567571
match idx {
568572
0 => Some('\\'),
569-
1 => Some(c),
573+
1 => Some(ch),
570574
_ => None,
571575
}
572576
}
@@ -580,6 +584,18 @@ impl Iterator for EscapeDefault {
580584
}
581585
}
582586

587+
#[test]
588+
fn ed_iterator_specializations() {
589+
use super::EscapeDefault;
590+
591+
/// Check counting
592+
assert_eq!('\n'.escape_default().count(), 2);
593+
assert_eq!('c'.escape_default().count(), 1);
594+
assert_eq!(' '.escape_default().count(), 1);
595+
assert_eq!('\\'.escape_default().count(), 2);
596+
}
597+
598+
583599
impl EscapeDefault {
584600
fn get_offset(&self) -> Option<usize> {
585601
match self.state {

0 commit comments

Comments
 (0)