diff --git a/apps/app_directory.c b/apps/app_directory.c index 2b0b6776cce9a1215f437217a7fb0c4c16693653..fe8139de5e5aee6b240be6935b6eb3ee9327e41b 100644 --- a/apps/app_directory.c +++ b/apps/app_directory.c @@ -437,6 +437,9 @@ static struct ast_config *realtime_directory(char *context) if (!(cat = ast_category_new(context, "", 99999))) { ast_log(LOG_WARNING, "Out of memory\n"); ast_config_destroy(cfg); + if (rtdata) { + ast_config_destroy(rtdata); + } return NULL; } ast_category_append(cfg, cat); diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 025ad3561cb23f1cf65d038a19be293a6df29519..3ecd0a1396e266c2461f2a14a6936d8ed540d1e4 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -1812,7 +1812,7 @@ static int rt_extend_conf(char *confno) char endtime[32]; struct timeval now; struct ast_tm tm; - struct ast_variable *var; + struct ast_variable *var, *orig_var; char bookid[8]; if (!extendby) { @@ -1828,6 +1828,8 @@ static int rt_extend_conf(char *confno) confno, "startTime<= ", currenttime, "endtime>= ", currenttime, NULL); + origvar = var; + /* Identify the specific RealTime conference */ while (var) { if (!strcasecmp(var->name, "bookid")) { @@ -1839,7 +1841,7 @@ static int rt_extend_conf(char *confno) var = var->next; } - ast_variables_destroy(var); + ast_variables_destroy(orig_var); ast_strptime(endtime, DATE_FORMAT, &tm); now = ast_mktime(&tm, NULL); diff --git a/apps/app_queue.c b/apps/app_queue.c index 07b7db186439a75a3005f3c15a360c7781f45772..49276ebacd2c188b464ce3a5bffc76222b0543b7 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -2205,8 +2205,12 @@ static void leave_queue(struct queue_ent *qe) /*If the queue is a realtime queue, check to see if it's still defined in real time*/ if (q->realtime) { - if (!ast_load_realtime("queues", "name", q->name, SENTINEL)) + struct ast_variable *var; + if (!(var = ast_load_realtime("queues", "name", q->name, SENTINEL))) { q->dead = 1; + } else { + ast_variables_destroy(var); + } } if (q->dead) { diff --git a/apps/app_voicemail.c b/apps/app_voicemail.c index 92fc41d8b7010dbd27e877b9c0fe496e55b601b0..00693f11ba173f5c0506a3f94dbbb9fa6c202643 100644 --- a/apps/app_voicemail.c +++ b/apps/app_voicemail.c @@ -9709,6 +9709,8 @@ static char *show_users_realtime(int fd, const char *context) "=============================================================\n" "\n"); + ast_config_destroy(cfg); + return CLI_SUCCESS; } diff --git a/res/res_realtime.c b/res/res_realtime.c index ffc8c00958a014ffe35bdbfa6f7233432da6ec4a..9be076a6ba7301dd244b412516370b82b867be46 100644 --- a/res/res_realtime.c +++ b/res/res_realtime.c @@ -43,7 +43,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") static char *cli_realtime_load(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { #define CRL_HEADER_FORMAT "%30s %-30s\n" - struct ast_variable *var=NULL; + struct ast_variable *var = NULL, orig_var = NULL; switch (cmd) { case CLI_INIT: @@ -66,6 +66,7 @@ static char *cli_realtime_load(struct ast_cli_entry *e, int cmd, struct ast_cli_ if (var) { ast_cli(a->fd, CRL_HEADER_FORMAT, "Column Name", "Column Value"); ast_cli(a->fd, CRL_HEADER_FORMAT, "--------------------", "--------------------"); + orig_var = var; while (var) { ast_cli(a->fd, CRL_HEADER_FORMAT, var->name, var->value); var = var->next; @@ -73,6 +74,7 @@ static char *cli_realtime_load(struct ast_cli_entry *e, int cmd, struct ast_cli_ } else { ast_cli(a->fd, "No rows found matching search criteria.\n"); } + ast_variables_destroy(orig_var); return CLI_SUCCESS; }