aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-03 21:43:09 +0000
committermmichelson <mmichelson@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-03 21:43:09 +0000
commit536b36e8ef7380b46a9acc11eacae5f214ca560a (patch)
tree0ddcd1575a634a41f0e26e4c4a9504e7ebf57943
parente8534e715d1bc4d68a54cd0535ebe9ba1b755de3 (diff)
Fix a memory leak when updating a realtime member field.
This was discovered while looking at issue #14353 git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@179971 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--apps/app_queue.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/apps/app_queue.c b/apps/app_queue.c
index 70704f02b..24fe45afa 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;
}