From db6fd56aca991b6cfddebc1d8bb952269af72a96 Mon Sep 17 00:00:00 2001 From: Humza Shahid Date: Sat, 13 Sep 2025 03:32:35 +0100 Subject: [PATCH] perform bounds checking when we try to index into a vector, in LineGap's 'getLineNumberOfIdx' helper functions --- src/line_gap.sml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/line_gap.sml b/src/line_gap.sml index 8d4cbaa..caa9963 100644 --- a/src/line_gap.sml +++ b/src/line_gap.sml @@ -2662,12 +2662,12 @@ struct curLine else let + val prevLine = curLine - Vector.length lhd val relativeIdx = findIdx - prevIdx val relativeLine = binSearch (relativeIdx, lhd) - val lineOffset = Vector.sub (lhd, relativeLine) - val prevLine = curLine - Vector.length lhd in - prevLine + lineOffset + if relativeLine < 0 then prevLine + else Vector.sub (lhd, relativeLine) + prevLine end else let val prevLine = curLine - Vector.length lhd @@ -2691,7 +2691,8 @@ struct let val relativeIdx = findIdx - curIdx val relativeLine = binSearch (relativeIdx, lhd) - val lineOffset = Vector.sub (lhd, relativeLine) + val lineOffset = + if relativeLine < 0 then 0 else Vector.sub (lhd, relativeLine) in curLine + lineOffset end