Fixing more memory leaks.

This commit is contained in:
Robin Sommer 2013-04-29 21:10:59 -07:00
parent 95cf662ff5
commit e8c9c2ee0b

View file

@ -77,7 +77,7 @@ char* CompositeHash::SingleValHash(int type_check, char* kp0,
*kp = ( v ? 1 : 0); *kp = ( v ? 1 : 0);
kp0 = reinterpret_cast<char*>(kp+1); kp0 = reinterpret_cast<char*>(kp+1);
if ( ! v ) if ( ! v )
return kp0; return kp0;
} }
@ -181,16 +181,24 @@ char* CompositeHash::SingleValHash(int type_check, char* kp0,
Val* key = lv->Index(i); Val* key = lv->Index(i);
if ( ! (kp1 = SingleValHash(type_check, kp1, key->Type(), key, if ( ! (kp1 = SingleValHash(type_check, kp1, key->Type(), key,
false)) ) false)) )
{
Unref(lv);
return 0; return 0;
}
if ( ! v->Type()->IsSet() ) if ( ! v->Type()->IsSet() )
{ {
Val* val = tv->Lookup(key); Val* val = tv->Lookup(key);
if ( ! (kp1 = SingleValHash(type_check, kp1, val->Type(), if ( ! (kp1 = SingleValHash(type_check, kp1, val->Type(),
val, false)) ) val, false)) )
{
Unref(lv);
return 0; return 0;
}
} }
} }
Unref(lv);
} }
break; break;
@ -454,16 +462,27 @@ int CompositeHash::SingleTypeKeySize(BroType* bt, const Val* v,
Val* key = lv->Index(i); Val* key = lv->Index(i);
sz = SingleTypeKeySize(key->Type(), key, type_check, sz, false, sz = SingleTypeKeySize(key->Type(), key, type_check, sz, false,
calc_static_size); calc_static_size);
if ( ! sz ) return 0; if ( ! sz )
{
Unref(lv);
return 0;
}
if ( ! bt->IsSet() ) if ( ! bt->IsSet() )
{ {
Val* val = tv->Lookup(key); Val* val = tv->Lookup(key);
sz = SingleTypeKeySize(val->Type(), val, type_check, sz, sz = SingleTypeKeySize(val->Type(), val, type_check, sz,
false, calc_static_size); false, calc_static_size);
if ( ! sz ) return 0; if ( ! sz )
{
Unref(lv);
return 0;
}
} }
} }
Unref(lv);
break; break;
} }