]> git.droids-corp.org - libcmdline.git/blobdiff - src/lib/cmdline_rdline.c
rdline: fix buffer when user validates with the cursor at the middle
[libcmdline.git] / src / lib / cmdline_rdline.c
index ee78cb2ba685010630db9f72f3b928325a04ef09..8d07b025f8ff8db4b0245a63c33d603818cb20f6 100644 (file)
@@ -462,7 +462,13 @@ rdline_parse_char(struct rdline *rdl, char c)
                }
 
                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';
@@ -491,7 +497,7 @@ rdline_parse_char(struct rdline *rdl, char c)
                                return RDLINE_RES_EXITED;
 #endif
                        return RDLINE_RES_VALIDATED;
-
+               }
 #ifndef NO_RDLINE_HISTORY
                case CMDLINE_KEY_UP_ARR:
                case CMDLINE_KEY_CTRL_P: