diff --git a/src/script_opt/Stmt.cc b/src/script_opt/Stmt.cc index 8e18280629..59f33e0003 100644 --- a/src/script_opt/Stmt.cc +++ b/src/script_opt/Stmt.cc @@ -322,11 +322,16 @@ IntrusivePtr Case::Duplicate() if ( expr_cases ) { auto new_exprs = expr_cases->Duplicate()->AsListExprPtr(); - return make_intrusive(new_exprs, type_cases, s->Duplicate()); + return make_intrusive(new_exprs, nullptr, s->Duplicate()); } - else - return make_intrusive(nullptr, type_cases, s->Duplicate()); + if ( type_cases ) + { + loop_over_list(*type_cases, i) + zeek::Ref((*type_cases)[i]); + } + + return make_intrusive(nullptr, type_cases, s->Duplicate()); }