mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
fixes for initializations of "-O gen-C++" script compilations
This commit is contained in:
parent
bae87fb606
commit
f7b739a47d
4 changed files with 14 additions and 3 deletions
|
@ -366,6 +366,15 @@ public:
|
|||
protected:
|
||||
IndexType(TypeTag t, TypeListPtr arg_indices, TypePtr arg_yield_type)
|
||||
: Type(t), indices(std::move(arg_indices)), yield_type(std::move(arg_yield_type)) {
|
||||
// "indices" might be nil if we're deferring construction of the type
|
||||
// for "-O use-C++" initialization.
|
||||
if ( indices )
|
||||
SetSpecialIndices();
|
||||
else
|
||||
is_subnet_index = is_pattern_index = false; // placeholders
|
||||
}
|
||||
|
||||
void SetSpecialIndices() {
|
||||
const auto& types = indices->GetTypes();
|
||||
is_subnet_index = types.size() == 1 && types[0]->Tag() == TYPE_SUBNET;
|
||||
is_pattern_index = types.size() == 1 && types[0]->Tag() == TYPE_PATTERN;
|
||||
|
|
|
@ -441,7 +441,7 @@ TableTypeInfo::TableTypeInfo(CPPCompile* _c, TypePtr _t) : AbstractTypeInfo(_c,
|
|||
auto gi = c->RegisterType(tbl->GetIndices());
|
||||
ASSERT(gi);
|
||||
indices = gi->Offset();
|
||||
final_init_cohort = gi->InitCohort();
|
||||
final_init_cohort = gi->InitCohort() + 1;
|
||||
|
||||
yield = tbl->Yield();
|
||||
|
||||
|
|
|
@ -22,8 +22,10 @@ public:
|
|||
CPPTableType() : TableType(nullptr, nullptr){};
|
||||
|
||||
void SetIndexAndYield(TypeListPtr ind, TypePtr yield) {
|
||||
ind = std::move(indices);
|
||||
indices = std::move(ind);
|
||||
yield_type = std::move(yield);
|
||||
SetSpecialIndices();
|
||||
RegenerateHash();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -221,7 +221,7 @@ TableValPtr set_constructor__CPP(vector<ValPtr> elements, TableTypePtr t, vector
|
|||
auto aggr = make_intrusive<TableVal>(std::move(t), std::move(attrs));
|
||||
|
||||
for ( auto& elem : elements )
|
||||
aggr->Assign(std::move(elem), nullptr);
|
||||
aggr->Assign(elem, nullptr);
|
||||
|
||||
return aggr;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue