Change protected EnumVal ctor to use IntrusivePtr

This commit is contained in:
Jon Siwek 2020-05-14 20:44:38 -07:00
parent 440b0623ac
commit 902f93671c
2 changed files with 4 additions and 5 deletions

View file

@ -1182,7 +1182,7 @@ void EnumType::CheckAndAddName(const string& module_name, const char* name,
AddNameInternal(module_name, name, val, is_export);
if ( vals.find(val) == vals.end() )
vals[val] = make_intrusive<EnumVal>(this, val);
vals[val] = make_intrusive<EnumVal>(IntrusivePtr{NewRef{}, this}, val);
set<BroType*> types = BroType::GetAliases(GetName());
set<BroType*>::const_iterator it;
@ -1238,7 +1238,7 @@ IntrusivePtr<EnumVal> EnumType::GetVal(bro_int_t i)
if ( it == vals.end() )
{
rval = make_intrusive<EnumVal>(this, i);
rval = make_intrusive<EnumVal>(IntrusivePtr{NewRef{}, this}, i);
vals[i] = rval;
}
else

View file

@ -1011,9 +1011,8 @@ protected:
template<class T, class... Ts>
friend IntrusivePtr<T> make_intrusive(Ts&&... args);
EnumVal(EnumType* t, int i) : Val(bro_int_t(i), {NewRef{}, t})
{
}
EnumVal(IntrusivePtr<EnumType> t, int i) : Val(bro_int_t(i), std::move(t))
{}
void ValDescribe(ODesc* d) const override;
IntrusivePtr<Val> DoClone(CloneState* state) override;