fix failing unit test in search-list.sml/build-search-list.sml: perform bounds checking into array

This commit is contained in:
2025-08-04 08:33:48 +01:00
parent d4532e37cf
commit f4c9039af1
3 changed files with 22 additions and 8 deletions

View File

@@ -27,7 +27,7 @@ struct
case rightStrings of
hd :: tl =>
let
val strIdx = absIdx - bufferIdx
val strIdx = Int.max (0, absIdx - bufferIdx)
in
if strIdx < String.size hd then
helpNextMatch (strIdx, hd, tl, absIdx, searchString, 0)

View File

@@ -226,11 +226,14 @@ struct
fun goToNum (num, {left, right}: t) =
case right of
hd :: tl =>
if num >= Vector.sub (hd, 0) then
(* num is greater or equal to first el on right so go right *)
helpGoToNumRight (num, left, right)
if Vector.length hd > 0 then
if Vector.sub (hd, 0) >= Vector.sub (hd, 0) then
(* num is greater or equal to first el on right so go right *)
helpGoToNumRight (num, left, right)
else
(* num is less than first el on right so go left *)
helpGoToNumLeft (num, left, right)
else
(* num is less than first el on right so go left *)
helpGoToNumLeft (num, left, right)
| [] => helpGoToNumLeft (num, left, right)