diff options
author | Felipe Oliveira Carvalho <felipekde@gmail.com> | 2014-05-31 00:10:32 -0300 |
---|---|---|
committer | Felipe Oliveira Carvalho <felipekde@gmail.com> | 2014-06-16 01:36:32 -0300 |
commit | 3a9a76c996b590f4a25fcf00afe8e89a85071bad (patch) | |
tree | 7f4922de2049a1e8d62001135ec69df1c92aa708 /src | |
parent | a26a1697c7b3447ebb21acb1f0e6bae16d80e409 (diff) | |
download | rneovim-3a9a76c996b590f4a25fcf00afe8e89a85071bad.tar.gz rneovim-3a9a76c996b590f4a25fcf00afe8e89a85071bad.tar.bz2 rneovim-3a9a76c996b590f4a25fcf00afe8e89a85071bad.zip |
No OOM in vim_strsave_escape_csi()
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/eval.c | 12 | ||||
-rw-r--r-- | src/nvim/getchar.c | 11 | ||||
-rw-r--r-- | src/nvim/ops.c | 2 |
3 files changed, 9 insertions, 16 deletions
diff --git a/src/nvim/eval.c b/src/nvim/eval.c index 395d7f19d9..b5efadb554 100644 --- a/src/nvim/eval.c +++ b/src/nvim/eval.c @@ -8295,13 +8295,11 @@ static void f_feedkeys(typval_T *argvars, typval_T *rettv) /* Need to escape K_SPECIAL and CSI before putting the string in the * typeahead buffer. */ keys_esc = vim_strsave_escape_csi(keys); - if (keys_esc != NULL) { - ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE), - typebuf.tb_len, !typed, FALSE); - free(keys_esc); - if (vgetc_busy) - typebuf_was_filled = TRUE; - } + ins_typebuf(keys_esc, (remap ? REMAP_YES : REMAP_NONE), + typebuf.tb_len, !typed, FALSE); + free(keys_esc); + if (vgetc_busy) + typebuf_was_filled = TRUE; } } diff --git a/src/nvim/getchar.c b/src/nvim/getchar.c index c8c9132326..b169899cea 100644 --- a/src/nvim/getchar.c +++ b/src/nvim/getchar.c @@ -26,6 +26,7 @@ #include "nvim/ex_docmd.h" #include "nvim/ex_getln.h" #include "nvim/farsi.h" +#include "nvim/func_attr.h" #include "nvim/main.h" #include "nvim/mbyte.h" #include "nvim/memline.h" @@ -3760,17 +3761,13 @@ static bool is_user_input(int k) /* * Copy "p" to allocated memory, escaping K_SPECIAL and CSI so that the result * can be put in the typeahead buffer. - * Returns NULL when out of memory. */ char_u *vim_strsave_escape_csi(char_u *p) { - char_u *res; - char_u *s, *d; - /* Need a buffer to hold up to three times as much. */ - res = xmalloc(STRLEN(p) * 3 + 1); - d = res; - for (s = p; *s != NUL; ) { + char_u *res = xmalloc(STRLEN(p) * 3 + 1); + char_u *d = res; + for (char_u *s = p; *s != NUL; ) { if (s[0] == K_SPECIAL && s[1] != NUL && s[2] != NUL) { /* Copy special key unmodified. */ *d++ = *s++; diff --git a/src/nvim/ops.c b/src/nvim/ops.c index d976b3d4e8..e80ffac6e1 100644 --- a/src/nvim/ops.c +++ b/src/nvim/ops.c @@ -986,8 +986,6 @@ do_execreg ( return FAIL; } escaped = vim_strsave_escape_csi(y_current->y_array[i]); - if (escaped == NULL) - return FAIL; retval = ins_typebuf(escaped, remap, 0, TRUE, silent); free(escaped); if (retval == FAIL) |