]> git.lizzy.rs Git - micro.git/commitdiff
Fix deleteLines off-by-one error
authorZachary Yedidia <zyedidia@gmail.com>
Wed, 12 Feb 2020 06:16:11 +0000 (01:16 -0500)
committerZachary Yedidia <zyedidia@gmail.com>
Wed, 12 Feb 2020 06:16:11 +0000 (01:16 -0500)
Fixes #1501

internal/buffer/line_array.go

index 75a5658c6bfefaac35088b96f6ebb4bb19488c72..3aae47ba86b7e711ae7facf76215eaf1d976324a 100644 (file)
@@ -230,7 +230,7 @@ func (la *LineArray) remove(start, end Loc) []byte {
        if start.Y == end.Y {
                la.lines[start.Y].data = append(la.lines[start.Y].data[:startX], la.lines[start.Y].data[endX:]...)
        } else {
-               la.deleteLines(start.Y, end.Y-1)
+               la.deleteLines(start.Y+1, end.Y-1)
                la.deleteToEnd(Loc{startX, start.Y})
                la.deleteFromStart(Loc{endX - 1, start.Y + 1})
                la.joinLines(start.Y, start.Y+1)
@@ -254,7 +254,7 @@ func (la *LineArray) deleteLine(y int) {
 }
 
 func (la *LineArray) deleteLines(y1, y2 int) {
-       la.lines = la.lines[:y1+copy(la.lines[y1:], la.lines[y2:])]
+       la.lines = la.lines[:y1+copy(la.lines[y1:], la.lines[y2+1:])]
 }
 
 // DeleteByte deletes the byte at a position