Mercurial > vim
changeset 32148:46c32a9a1312 v9.0.1405
patch 9.0.1405: missing check for out-of-memory
Commit: https://github.com/vim/vim/commit/14338024c131b71a337c2bb87cb5904f5a5782b8
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Mar 15 22:05:44 2023 +0000
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 https://github.com/vim/vim/issues/12149)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 15 Mar 2023 23:15:03 +0100 |
parents | ddbe0aae98ae |
children | 4336fcfe5297 |
files | src/option.c src/version.c |
diffstat | 2 files changed, 18 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/option.c +++ b/src/option.c @@ -126,15 +126,14 @@ set_init_default_backupskip(void) #endif int len; garray_T ga; - int mustfree; - char_u *item; + char_u *item; opt_idx = findoption((char_u *)"backupskip"); ga_init2(&ga, 1, 100); for (n = 0; n < (long)ARRAY_LENGTH(names); ++n) { - mustfree = FALSE; + int mustfree = FALSE; #ifdef UNIX if (*names[n] == NUL) # ifdef MACOS_X @@ -150,19 +149,22 @@ set_init_default_backupskip(void) // First time count the NUL, otherwise count the ','. len = (int)STRLEN(p) + 3; item = alloc(len); - STRCPY(item, p); - add_pathsep(item); - STRCAT(item, "*"); - if (find_dup_item(ga.ga_data, item, options[opt_idx].flags) - == NULL - && ga_grow(&ga, len) == OK) + if (item != NULL) { - if (ga.ga_len > 0) - STRCAT(ga.ga_data, ","); - STRCAT(ga.ga_data, item); - ga.ga_len += len; + STRCPY(item, p); + 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) + STRCAT(ga.ga_data, ","); + STRCAT(ga.ga_data, item); + ga.ga_len += len; + } + vim_free(item); } - vim_free(item); } if (mustfree) vim_free(p);