@@ -1873,6 +1873,47 @@ mod pattern {
18731873 "* \t " ,
18741874 [ Reject ( 0 , 1 ) , Reject ( 1 , 2 ) , Reject ( 2 , 3 ) , ]
18751875 ) ;
1876+
1877+ // See #85462
1878+ #[ test]
1879+ fn str_searcher_empty_needle_after_done ( ) {
1880+ // Empty needle and haystack
1881+ {
1882+ let mut searcher = "" . into_searcher ( "" ) ;
1883+
1884+ assert_eq ! ( searcher. next( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1885+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1886+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1887+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1888+
1889+ let mut searcher = "" . into_searcher ( "" ) ;
1890+
1891+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1892+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1893+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1894+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1895+ }
1896+ // Empty needle and non-empty haystack
1897+ {
1898+ let mut searcher = "" . into_searcher ( "a" ) ;
1899+
1900+ assert_eq ! ( searcher. next( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1901+ assert_eq ! ( searcher. next( ) , SearchStep :: Reject ( 0 , 1 ) ) ;
1902+ assert_eq ! ( searcher. next( ) , SearchStep :: Match ( 1 , 1 ) ) ;
1903+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1904+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1905+ assert_eq ! ( searcher. next( ) , SearchStep :: Done ) ;
1906+
1907+ let mut searcher = "" . into_searcher ( "a" ) ;
1908+
1909+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Match ( 1 , 1 ) ) ;
1910+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Reject ( 0 , 1 ) ) ;
1911+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Match ( 0 , 0 ) ) ;
1912+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1913+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1914+ assert_eq ! ( searcher. next_back( ) , SearchStep :: Done ) ;
1915+ }
1916+ }
18761917}
18771918
18781919macro_rules! generate_iterator_test {
0 commit comments