git.droids-corp.org
/
libcmdline.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rdline: fix buffer when user validates with the cursor at the middle
[libcmdline.git]
/
src
/
lib
/
cmdline_rdline.c
diff --git
a/src/lib/cmdline_rdline.c
b/src/lib/cmdline_rdline.c
index
ee78cb2
..
8d07b02
100644
(file)
--- a/
src/lib/cmdline_rdline.c
+++ b/
src/lib/cmdline_rdline.c
@@
-462,7
+462,13
@@
rdline_parse_char(struct rdline *rdl, char c)
}
case CMDLINE_KEY_RETURN:
}
case CMDLINE_KEY_RETURN:
- case CMDLINE_KEY_RETURN2:
+ case CMDLINE_KEY_RETURN2: {
+ char tmp;
+ while (!CIRBUF_IS_EMPTY(&rdl->right) &&
+ (tmp = cirbuf_get_head(&rdl->right))) {
+ cirbuf_del_head(&rdl->right);
+ cirbuf_add_tail(&rdl->left, tmp);
+ }
cirbuf_align_left(&rdl->left);
rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)] = '\n';
rdl->left_buf[CIRBUF_GET_LEN(&rdl->left) + 1] = '\0';
cirbuf_align_left(&rdl->left);
rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)] = '\n';
rdl->left_buf[CIRBUF_GET_LEN(&rdl->left) + 1] = '\0';
@@
-491,7
+497,7
@@
rdline_parse_char(struct rdline *rdl, char c)
return RDLINE_RES_EXITED;
#endif
return RDLINE_RES_VALIDATED;
return RDLINE_RES_EXITED;
#endif
return RDLINE_RES_VALIDATED;
-
+ }
#ifndef NO_RDLINE_HISTORY
case CMDLINE_KEY_UP_ARR:
case CMDLINE_KEY_CTRL_P:
#ifndef NO_RDLINE_HISTORY
case CMDLINE_KEY_UP_ARR:
case CMDLINE_KEY_CTRL_P: