@@ -487,6 +487,7 @@ impl Reader {
487
487
self . nfa_state = NfaState :: StartRecord ;
488
488
self . line = 1 ;
489
489
self . has_read = false ;
490
+ self . output_pos = 0 ;
490
491
}
491
492
492
493
/// Return the current line number as measured by the number of occurrences
@@ -2002,4 +2003,27 @@ mod tests {
2002
2003
2003
2004
assert_read_record ! ( rdr, & inp, out, ends, 0 , 0 , 0 , End ) ;
2004
2005
}
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
+ }
2005
2029
}
0 commit comments