forked from aniani/vim
patch 9.0.1405: missing check for out-of-memory
Problem: Missing check for out-of-memory. Solution: Check for alloc() returning NULL pointer. (closes #12149)
This commit is contained in:
30
src/option.c
30
src/option.c
@@ -126,15 +126,14 @@ set_init_default_backupskip(void)
|
|||||||
#endif
|
#endif
|
||||||
int len;
|
int len;
|
||||||
garray_T ga;
|
garray_T ga;
|
||||||
int mustfree;
|
char_u *item;
|
||||||
char_u *item;
|
|
||||||
|
|
||||||
opt_idx = findoption((char_u *)"backupskip");
|
opt_idx = findoption((char_u *)"backupskip");
|
||||||
|
|
||||||
ga_init2(&ga, 1, 100);
|
ga_init2(&ga, 1, 100);
|
||||||
for (n = 0; n < (long)ARRAY_LENGTH(names); ++n)
|
for (n = 0; n < (long)ARRAY_LENGTH(names); ++n)
|
||||||
{
|
{
|
||||||
mustfree = FALSE;
|
int mustfree = FALSE;
|
||||||
#ifdef UNIX
|
#ifdef UNIX
|
||||||
if (*names[n] == NUL)
|
if (*names[n] == NUL)
|
||||||
# ifdef MACOS_X
|
# ifdef MACOS_X
|
||||||
@@ -150,19 +149,22 @@ set_init_default_backupskip(void)
|
|||||||
// First time count the NUL, otherwise count the ','.
|
// First time count the NUL, otherwise count the ','.
|
||||||
len = (int)STRLEN(p) + 3;
|
len = (int)STRLEN(p) + 3;
|
||||||
item = alloc(len);
|
item = alloc(len);
|
||||||
STRCPY(item, p);
|
if (item != NULL)
|
||||||
add_pathsep(item);
|
|
||||||
STRCAT(item, "*");
|
|
||||||
if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
|
|
||||||
== NULL
|
|
||||||
&& ga_grow(&ga, len) == OK)
|
|
||||||
{
|
{
|
||||||
if (ga.ga_len > 0)
|
STRCPY(item, p);
|
||||||
STRCAT(ga.ga_data, ",");
|
add_pathsep(item);
|
||||||
STRCAT(ga.ga_data, item);
|
STRCAT(item, "*");
|
||||||
ga.ga_len += len;
|
if (find_dup_item(ga.ga_data, item, options[opt_idx].flags)
|
||||||
|
== NULL
|
||||||
|
&& ga_grow(&ga, len) == OK)
|
||||||
|
{
|
||||||
|
if (ga.ga_len > 0)
|
||||||
|
STRCAT(ga.ga_data, ",");
|
||||||
|
STRCAT(ga.ga_data, item);
|
||||||
|
ga.ga_len += len;
|
||||||
|
}
|
||||||
|
vim_free(item);
|
||||||
}
|
}
|
||||||
vim_free(item);
|
|
||||||
}
|
}
|
||||||
if (mustfree)
|
if (mustfree)
|
||||||
vim_free(p);
|
vim_free(p);
|
||||||
|
@@ -695,6 +695,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1405,
|
||||||
/**/
|
/**/
|
||||||
1404,
|
1404,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user