aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
Diffstat (limited to 'main')
-rw-r--r--main/asterisk.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index 3c134e207..95778bfe4 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -1983,7 +1983,7 @@ static char *cli_prompt(EditLine *el)
static char **ast_el_strtoarr(char *buf)
{
- char **match_list = NULL, *retstr;
+ char **match_list = NULL, **match_list_tmp, *retstr;
size_t match_list_len;
int matches = 0;
@@ -1994,8 +1994,12 @@ static char **ast_el_strtoarr(char *buf)
break;
if (matches + 1 >= match_list_len) {
match_list_len <<= 1;
- if (!(match_list = ast_realloc(match_list, match_list_len * sizeof(char *)))) {
- /* TODO: Handle memory allocation failure */
+ if ((match_list_tmp = ast_realloc(match_list, match_list_len * sizeof(char *)))) {
+ match_list = match_list_tmp;
+ } else {
+ if (match_list)
+ ast_free(match_list);
+ return (char **) NULL;
}
}
@@ -2006,8 +2010,12 @@ static char **ast_el_strtoarr(char *buf)
return (char **) NULL;
if (matches >= match_list_len) {
- if (!(match_list = ast_realloc(match_list, (match_list_len + 1) * sizeof(char *)))) {
- /* TODO: Handle memory allocation failure */
+ if ((match_list_tmp = ast_realloc(match_list, (match_list_len + 1) * sizeof(char *)))) {
+ match_list = match_list_tmp;
+ } else {
+ if (match_list)
+ ast_free(match_list);
+ return (char **) NULL;
}
}