diff --git a/src/traits.rs b/src/traits.rs index f778c3601..782bc4aa2 100644 --- a/src/traits.rs +++ b/src/traits.rs @@ -462,7 +462,7 @@ impl<'a> Input for &'a str { let (str1, str2) = self.split_at(i); Ok((str2, str1)) } - None => Ok(self.split_at(0)), + None => Ok(self.take_split(self.input_len())), } } diff --git a/tests/issues.rs b/tests/issues.rs index 2b1923d6a..28558cc72 100644 --- a/tests/issues.rs +++ b/tests/issues.rs @@ -269,3 +269,15 @@ fn issue_1586_parser_iterator_impl() { assert_eq!(parse_input("123\n456").collect::>(), vec![123, 456]); } + +#[test] +fn issue_1809_complete_string_parser_returns_wrong_slice() { + use nom::character::complete::multispace0; + use nom::combinator::recognize; + + let input = "\n"; + assert_eq!( + recognize::<_, nom::error::Error<_>, _>(multispace0).parse(input), + Ok(("", "\n")) + ); +} \ No newline at end of file