aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFelipe Oliveira Carvalho <felipekde@gmail.com>2014-05-31 00:10:32 -0300
committerFelipe Oliveira Carvalho <felipekde@gmail.com>2014-06-16 01:36:32 -0300
commit3a9a76c996b590f4a25fcf00afe8e89a85071bad (patch)
tree7f4922de2049a1e8d62001135ec69df1c92aa708 /src
parenta26a1697c7b3447ebb21acb1f0e6bae16d80e409 (diff)
downloadrneovim-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.c12
-rw-r--r--src/nvim/getchar.c11
-rw-r--r--src/nvim/ops.c2
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)