No OOM in vim_strsave_escape_csi()

This commit is contained in:
Felipe Oliveira Carvalho
2014-05-31 00:10:32 -03:00
parent a26a1697c7
commit 3a9a76c996
3 changed files with 9 additions and 16 deletions

View File

@@ -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++;