diff --git a/src/core/CCParse.ml b/src/core/CCParse.ml index e1d76178..557f3e80 100644 --- a/src/core/CCParse.ml +++ b/src/core/CCParse.ml @@ -605,7 +605,7 @@ let take_until_success p : (slice * _) t = let continue = ref true in let res = ref None in - while !continue && !i < st.j do + while !continue && !i <= st.j do let st' = { st with i = !i } in p.run st' ~ok:(fun new_st x -> diff --git a/tests/core/t_parse.ml b/tests/core/t_parse.ml index 02716c60..eb3f3dee 100644 --- a/tests/core/t_parse.ml +++ b/tests/core/t_parse.ml @@ -188,6 +188,15 @@ eq "hello world") ;; +eq + ~printer:(errpp Q.Print.(string)) + (Ok "ahahahah") + (parse_string + (let+ slice, () = take_until_success eoi in + Slice.to_string slice) + "ahahahah") +;; + t @@ fun () -> let p0 = skip_white *> U.int in let p = skip_white *> char '(' *> many p0 <* (skip_white <* char ')') in