static void delete_word(void)
{
+ int pos;
+
edit_clear_line();
- while (cmdbuf_len > 0 && cmdbuf[cmdbuf_len - 1] == ' ')
- cmdbuf_len--;
- while (cmdbuf_len > 0 && cmdbuf[cmdbuf_len - 1] != ' ')
- cmdbuf_len--;
- if (cmdbuf_pos > cmdbuf_len)
- cmdbuf_pos = cmdbuf_len;
+ pos = cmdbuf_pos;
+ while (pos > 0 && cmdbuf[pos - 1] == ' ')
+ pos--;
+ while (pos > 0 && cmdbuf[pos - 1] != ' ')
+ pos--;
+ os_memmove(cmdbuf + pos, cmdbuf + cmdbuf_pos, cmdbuf_len - cmdbuf_pos);
+ cmdbuf_len -= cmdbuf_pos - pos;
+ cmdbuf_pos = pos;
edit_redraw();
}