insert works correctly - lchat - A line oriented chat front end for ii.
(HTM) git clone git://git.suckless.org/lchat
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
---
(DIR) commit 5ee1873a1ec3bc220efc5e1d1203b6fec97b8b71
(DIR) parent 25d90f4630b45e2b609d2e3daecb32cf5ff065fd
(HTM) Author: shuall <shualloret@gmail.com>
Date: Tue, 18 Jul 2017 18:56:07 -0400
insert works correctly
- adding character was always adding to end,
- the insert logic was extending the buffer based on the character
that was there and not based on the size of the character to be inserted
Diffstat:
M slackline.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
---
(DIR) diff --git a/slackline.c b/slackline.c
@@ -207,14 +207,14 @@ sl_keystroke(struct slackline *sl, int key)
/* add character to buffer */
if (sl->rcur < sl->rlen) { /* insert into buffer */
- char *ncur = sl_postoptr(sl, sl->rcur + 1);
char *cur = sl_postoptr(sl, sl->rcur);
char *end = sl_postoptr(sl, sl->rlen);
+ char *ncur = cur + sl->ubuf_len;
memmove(ncur, cur, end - cur);
}
- memcpy(sl->last, sl->ubuf, sl->ubuf_len);
+ memcpy(sl_postoptr(sl, sl->rcur), sl->ubuf, sl->ubuf_len);
sl->ptr += sl->ubuf_len;
sl->last += sl->ubuf_len;