From a5cc98bb5d189dcc9ad04516b6a583bae4ea1508 Mon Sep 17 00:00:00 2001 From: Bernhard Amann Date: Tue, 10 Apr 2012 13:57:09 -0700 Subject: [PATCH] fix memory leak in tables and vectors that are read into tables --- src/input/Manager.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/input/Manager.cc b/src/input/Manager.cc index a1a3410f5e..102fd78d6f 100644 --- a/src/input/Manager.cc +++ b/src/input/Manager.cc @@ -1795,8 +1795,12 @@ Val* Manager::ValueToVal(const Value* val, BroType* request_type) { SetType* s = new SetType(set_index, 0); TableVal* t = new TableVal(s); for ( int i = 0; i < val->val.set_val.size; i++ ) { - t->Assign(ValueToVal( val->val.set_val.vals[i], type ), 0); + Val* assignval = ValueToVal( val->val.set_val.vals[i], type ); + t->Assign(assignval, 0); + Unref(assignval); // idex is not consumed by assign. } + + Unref(s); return t; break; } @@ -1809,6 +1813,7 @@ Val* Manager::ValueToVal(const Value* val, BroType* request_type) { for ( int i = 0; i < val->val.vector_val.size; i++ ) { v->Assign(i, ValueToVal( val->val.set_val.vals[i], type ), 0); } + Unref(vt); return v; }