From 3cb51f0127e83d6025c36076c1f5df77434d2879 Mon Sep 17 00:00:00 2001 From: Mark Michelson Date: Tue, 3 Mar 2009 21:43:09 +0000 Subject: [PATCH] Fix a memory leak when updating a realtime member field. This was discovered while looking at issue #14353 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.6.0@179971 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_queue.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/apps/app_queue.c b/apps/app_queue.c index 70704f02be..24fe45afa1 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -1634,20 +1634,26 @@ static struct call_queue *load_realtime_queue(const char *queuename) static int update_realtime_member_field(struct member *mem, const char *queue_name, const char *field, const char *value) { - struct ast_variable *var; + struct ast_variable *var, *origvar; int ret = -1; - if (!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL))) + if (!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL))) { return ret; + } + + origvar = var; while (var) { - if (!strcmp(var->name, "uniqueid")) + if (!strcmp(var->name, "uniqueid")) { break; + } var = var->next; } if (var && !ast_strlen_zero(var->value)) { - if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1) + if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1) { ret = 0; + } } + ast_variables_destroy(origvar); return ret; }