Implement vim_str(n)save using xstrdup and strncpy/xmalloc

This commit is contained in:
Felipe Oliveira Carvalho 2014-05-08 21:32:40 -03:00
parent 32d018b57e
commit b63d2626ed
2 changed files with 7 additions and 16 deletions

View File

@ -46,14 +46,7 @@
*/ */
char_u *vim_strsave(char_u *string) char_u *vim_strsave(char_u *string)
{ {
char_u *p; return (char_u *)xstrdup((char *)string);
unsigned len;
len = (unsigned)STRLEN(string) + 1;
p = alloc(len);
if (p != NULL)
memmove(p, string, (size_t)len);
return p;
} }
/* /*
@ -64,12 +57,7 @@ char_u *vim_strsave(char_u *string)
*/ */
char_u *vim_strnsave(char_u *string, int len) char_u *vim_strnsave(char_u *string, int len)
{ {
char_u *p; return (char_u *)strncpy(xmallocz(len), (char *)string, len);
p = alloc((unsigned)(len + 1));
STRNCPY(p, string, len);
p[len] = NUL;
return p;
} }
/* /*

View File

@ -1,7 +1,10 @@
#ifndef NVIM_STRINGS_H #ifndef NVIM_STRINGS_H
#define NVIM_STRINGS_H #define NVIM_STRINGS_H
char_u *vim_strsave(char_u *string);
char_u *vim_strnsave(char_u *string, int len); #include "func_attr.h"
char_u *vim_strsave(char_u *string) FUNC_ATTR_NONNULL_RET;
char_u *vim_strnsave(char_u *string, int len) FUNC_ATTR_NONNULL_RET;
char_u *vim_strsave_escaped(char_u *string, char_u *esc_chars); char_u *vim_strsave_escaped(char_u *string, char_u *esc_chars);
char_u *vim_strsave_escaped_ext(char_u *string, char_u *esc_chars, char_u *vim_strsave_escaped_ext(char_u *string, char_u *esc_chars,
int cc, int cc,