diff options
Diffstat (limited to 'pbx.c')
-rw-r--r-- | pbx.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -4731,6 +4731,7 @@ struct app_tmp { pthread_t t; }; +/*! \brief run the application and free the descriptor once done */ static void *ast_pbx_run_app(void *data) { struct app_tmp *tmp = data; @@ -4750,7 +4751,6 @@ static void *ast_pbx_run_app(void *data) int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout, const char *app, const char *appdata, int *reason, int sync, const char *cid_num, const char *cid_name, struct ast_variable *vars, const char *account, struct ast_channel **locked_channel) { struct ast_channel *chan; - struct async_stat *as; struct app_tmp *tmp; int res = -1, cdr_res = -1; struct outgoing_helper oh; @@ -4790,7 +4790,10 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout, res = 0; if (option_verbose > 3) ast_verbose(VERBOSE_PREFIX_4 "Channel %s was answered.\n", chan->name); - if ((tmp = ast_calloc(1, sizeof(*tmp)))) { + tmp = ast_calloc(1, sizeof(*tmp)); + if (!tmp) + res = -1; + else { ast_copy_string(tmp->app, app, sizeof(tmp->app)); if (appdata) ast_copy_string(tmp->data, appdata, sizeof(tmp->data)); @@ -4816,8 +4819,6 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout, *locked_channel = chan; } } - } else { - res = -1; } } else { if (option_verbose > 3) @@ -4844,6 +4845,7 @@ int ast_pbx_outgoing_app(const char *type, int format, void *data, int timeout, } } else { + struct async_stat *as; if (!(as = ast_calloc(1, sizeof(*as)))) { res = -1; goto outgoing_app_cleanup; |