From 86aafb7c84f83107accea2f819925c6ac2c2e240 Mon Sep 17 00:00:00 2001 From: Vern Paxson Date: Sun, 30 May 2021 17:36:07 -0700 Subject: [PATCH] fix for inlining type-based switch statements --- src/script_opt/Stmt.cc | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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()); }