From f2a0c006f3dcdc07224fb5da6a3b2369b419afea Mon Sep 17 00:00:00 2001 From: Patrick Cleavelin Date: Sat, 10 Feb 2024 16:07:26 -0600 Subject: [PATCH] fix out of bounds on text delete --- .gitignore | 2 ++ src/core/file_buffer.odin | 13 ++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 13239cc..3171167 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ bin/ **/target +**/*.xcodeproj +**/*.DS_Store diff --git a/src/core/file_buffer.odin b/src/core/file_buffer.odin index 834f656..1d3b6d5 100644 --- a/src/core/file_buffer.odin +++ b/src/core/file_buffer.odin @@ -902,14 +902,21 @@ delete_content :: proc(buffer: ^FileBuffer, amount: int) { if len(content_slice_ptr^) == 1 { // move cursor to previous content_slice so we can delete the current one iterate_file_buffer_reverse(&it); - runtime.ordered_remove(&buffer.content_slices, it.cursor.index.slice_index+1); - } else { + + if it.hit_end { + runtime.ordered_remove(&buffer.content_slices, it.cursor.index.slice_index); + } else { + runtime.ordered_remove(&buffer.content_slices, it.cursor.index.slice_index+1); + } + } else if !it.hit_end { iterate_file_buffer_reverse(&it); content_slice_ptr^ = content_slice_ptr^[:len(content_slice_ptr^)-1]; } } - iterate_file_buffer(&it); + if !it.hit_end { + iterate_file_buffer(&it); + } buffer.cursor = it.cursor; } }