diff --git a/src/core/CCString.cppo.ml b/src/core/CCString.cppo.ml index 5c14f724..9c72ae0c 100644 --- a/src/core/CCString.cppo.ml +++ b/src/core/CCString.cppo.ml @@ -222,7 +222,7 @@ let find_all ?(start=0) ~sub = let res = Find.find ~pattern s !i in if res = ~-1 then None else ( - i := res + Find.pattern_length pattern; + i := res + 1; (* possible overlap *) Some res ) diff --git a/src/core/CCString.mli b/src/core/CCString.mli index 930eadc3..79bbbadf 100644 --- a/src/core/CCString.mli +++ b/src/core/CCString.mli @@ -109,7 +109,8 @@ val find : ?start:int -> sub:string -> string -> int *) val find_all : ?start:int -> sub:string -> string -> int gen -(** [find_all ~sub s] finds all occurrences of [sub] in [s] +(** [find_all ~sub s] finds all occurrences of [sub] in [s], even overlapping + instances. @param start starting position in [s] @since NEXT_RELEASE *)