diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2017-05-22 11:29:12 +0200 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2017-05-22 11:29:12 +0200 |
commit | c88d578d2df90e4fa2df10397234ce815ab54ece (patch) | |
tree | 06fcb8abd5ce1c4aaaac4d4719a5fac519b3fbab /src | |
parent | 23ec19b8ddb208295372147540d8ce764c777710 (diff) | |
download | weechat-c88d578d2df90e4fa2df10397234ce815ab54ece.zip |
core: fix potential use of NULL pointer in function arraylist_clear
Diffstat (limited to 'src')
-rw-r--r-- | src/core/wee-arraylist.c | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/src/core/wee-arraylist.c b/src/core/wee-arraylist.c index df98e66a1..c9b1d27f0 100644 --- a/src/core/wee-arraylist.c +++ b/src/core/wee-arraylist.c @@ -637,27 +637,29 @@ arraylist_clear (struct t_arraylist *arraylist) } } - if (arraylist->data - && (arraylist->size_alloc != arraylist->size_alloc_min)) + if (arraylist->data) { - free (arraylist->data); - arraylist->data = NULL; - arraylist->size_alloc = 0; - if (arraylist->size_alloc_min > 0) + if (arraylist->size_alloc != arraylist->size_alloc_min) + { + free (arraylist->data); + arraylist->data = NULL; + arraylist->size_alloc = 0; + if (arraylist->size_alloc_min > 0) + { + arraylist->data = calloc(arraylist->size_alloc_min, + sizeof (*arraylist->data)); + if (!arraylist->data) + return 0; + arraylist->size_alloc = arraylist->size_alloc_min; + } + } + else if (arraylist->size_alloc > 0) { - arraylist->data = calloc(arraylist->size_alloc_min, - sizeof (*arraylist->data)); - if (!arraylist->data) - return 0; - arraylist->size_alloc = arraylist->size_alloc_min; + memset (arraylist->data, + 0, + arraylist->size_alloc * sizeof (*arraylist->data)); } } - else if (arraylist->size_alloc > 0) - { - memset (arraylist->data, - 0, - arraylist->size_alloc * sizeof (*arraylist->data)); - } arraylist->size = 0; |