@@ -487,6 +487,7 @@ impl Reader {
487487 self . nfa_state = NfaState :: StartRecord ;
488488 self . line = 1 ;
489489 self . has_read = false ;
490+ self . output_pos = 0 ;
490491 }
491492
492493 /// Return the current line number as measured by the number of occurrences
@@ -2002,4 +2003,27 @@ mod tests {
20022003
20032004 assert_read_record ! ( rdr, & inp, out, ends, 0 , 0 , 0 , End ) ;
20042005 }
2006+
2007+ #[ test]
2008+ fn reset_input_partial ( ) {
2009+ use crate :: ReadRecordResult :: * ;
2010+
2011+ let inp = b ( "foo,bar\n baz" ) ;
2012+ let out = & mut [ 0 ; 1024 ] ;
2013+ let ends = & mut [ 0 ; 10 ] ;
2014+ let mut rdr = Reader :: new ( ) ;
2015+
2016+ assert_read_record ! ( rdr, & inp, out, ends, 8 , 6 , 2 , Record ) ;
2017+
2018+ // Try to read incomplete record.
2019+ let ( result, _, _, _) = rdr. read_record ( & inp[ 8 ..] , out, ends) ;
2020+ assert_eq ! ( result, InputEmpty ) ;
2021+
2022+ rdr. reset ( ) ;
2023+
2024+ let inp = b ( "baz,raz\n " ) ;
2025+ let ( result, _, _, _) = rdr. read_record ( inp, out, ends) ;
2026+ assert_eq ! ( result, Record ) ;
2027+ assert_eq ! ( ends[ 0 ] , 3 ) ;
2028+ }
20052029}
0 commit comments