diff --git a/src/Type.cc b/src/Type.cc index 17c2dad221..cb4f604cda 100644 --- a/src/Type.cc +++ b/src/Type.cc @@ -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(this, val); + vals[val] = make_intrusive(IntrusivePtr{NewRef{}, this}, val); set types = BroType::GetAliases(GetName()); set::const_iterator it; @@ -1238,7 +1238,7 @@ IntrusivePtr EnumType::GetVal(bro_int_t i) if ( it == vals.end() ) { - rval = make_intrusive(this, i); + rval = make_intrusive(IntrusivePtr{NewRef{}, this}, i); vals[i] = rval; } else diff --git a/src/Val.h b/src/Val.h index f093ada039..d94d94624c 100644 --- a/src/Val.h +++ b/src/Val.h @@ -1011,9 +1011,8 @@ protected: template friend IntrusivePtr make_intrusive(Ts&&... args); - EnumVal(EnumType* t, int i) : Val(bro_int_t(i), {NewRef{}, t}) - { - } + EnumVal(IntrusivePtr t, int i) : Val(bro_int_t(i), std::move(t)) + {} void ValDescribe(ODesc* d) const override; IntrusivePtr DoClone(CloneState* state) override;