summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWormHeamer2026-01-02 03:40:51 -0500
committerWormHeamer2026-01-02 03:40:51 -0500
commit548284b1ff30fb349822886281fd44a371b73b41 (patch)
treeb47d902daef8115524cf3c121ae522135b4b49ba
parent5898b883c8cb2817dade1b234ad29ceeab624c0e (diff)
fix invalid null yank at end of file
-rw-r--r--main.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/main.c b/main.c
index 80628d4..d01405a 100644
--- a/main.c
+++ b/main.c
@@ -1367,6 +1367,7 @@ void yank_range(Editor *e, TxtLoc start, TxtLoc end) {
end = t;
}
Str s = txt_collect_range(start, end, &e->scratch);
+ if (!s.n) return;
e->yank.s = realloc(e->yank.s, s.n);
if (!e->yank.s) FAIL_WITH_MSG("couldn't reallocate clipboard");
memcpy(e->yank.s, s.s, s.n);
@@ -1475,12 +1476,13 @@ void mode_key_normal(Editor *e, u32 c) {
e->mode = 1;
break;
case 'x':
- yank_range(e, eb->cur, cnext(eb->cur));
- eb->cur = txt_delete_c(cnext(eb->cur));
+ if (!at_end(eb->cur)) {
+ yank_range(e, eb->cur, cnext(eb->cur));
+ eb->cur = txt_delete_c(cnext(eb->cur));
+ }
break;
case 's':
- yank_range(e, eb->cur, cnext(eb->cur));
- eb->cur = txt_delete_c(cnext(eb->cur));
+ mode_key_normal(e, 'x');
e->mode = 1;
break;
case 'r':