From 10649178f8f42d38e4e9d9760eeda4d11dfdadda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Thu, 29 Aug 2019 21:03:46 +0200 Subject: [PATCH] search: insert new characters at cursor, not at the end of the buffer --- search.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/search.c b/search.c index ffa50c0e..6326aded 100644 --- a/search.c +++ b/search.c @@ -312,11 +312,16 @@ search_input(struct terminal *term, uint32_t key, xkb_keysym_t sym, xkb_mod_mask assert(term->search.len + wchars < term->search.sz); + memmove(&term->search.buf[term->search.cursor + wchars], + &term->search.buf[term->search.cursor], + (term->search.len - term->search.cursor) * sizeof(wchar_t)); + memset(&ps, 0, sizeof(ps)); - mbsnrtowcs(&term->search.buf[term->search.len], &src, count, - term->search.sz - term->search.len - 1, &ps); + mbsnrtowcs(&term->search.buf[term->search.cursor], &src, count, + wchars, &ps); term->search.len += wchars; + term->search.cursor += wchars; term->search.buf[term->search.len] = L'\0'; }