From 0b5a75a46345e476beac7e5f804cb64cb48017f6 Mon Sep 17 00:00:00 2001 From: Jon Siwek Date: Thu, 5 Sep 2013 16:09:52 -0500 Subject: [PATCH] Fix mem leak in failing table initialization case. Specifically that case looked like tables that have a compound index and an element assignment fails due to a type mismatch. --- src/Val.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Val.cc b/src/Val.cc index 50521cfee6..970fc02be7 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -2079,7 +2079,7 @@ int TableVal::ExpandCompoundAndInit(val_list* vl, int k, Val* new_val) Val* ind_k_v = (*vl)[k]; ListVal* ind_k = ind_k_v->Type()->IsSet() ? ind_k_v->AsTableVal()->ConvertToList() : - ind_k_v->AsListVal(); + ind_k_v->Ref()->AsListVal(); for ( int i = 0; i < ind_k->Length(); ++i ) { @@ -2097,12 +2097,13 @@ int TableVal::ExpandCompoundAndInit(val_list* vl, int k, Val* new_val) Unref(expd); if ( ! success ) + { + Unref(ind_k); return 0; + } } - if ( ind_k_v->Type()->IsSet() ) - Unref(ind_k); - + Unref(ind_k); return 1; }