From d49e709bfdee983bb9a188306f32c4b90b8019cc Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Feb 2020 12:54:10 +0100 Subject: [PATCH] Var: add missing references to `init` in add{,_and_assign}_local() The reference to `init` is consumed by make_var() and again by the AssignExpr constructor. --- src/Var.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Var.cc b/src/Var.cc index 971a09cfa9..1d917ad4aa 100644 --- a/src/Var.cc +++ b/src/Var.cc @@ -235,6 +235,8 @@ void add_global(ID* id, BroType* t, init_class c, Expr* init, Stmt* add_local(ID* id, BroType* t, init_class c, Expr* init, attr_list* attr, decl_type dt) { + if (init) + Ref(init); make_var(id, t, c, init, attr, dt, 0); if ( init ) @@ -262,6 +264,7 @@ Stmt* add_local(ID* id, BroType* t, init_class c, Expr* init, extern Expr* add_and_assign_local(ID* id, Expr* init, Val* val) { + Ref(init); make_var(id, 0, INIT_FULL, init, 0, VAR_REGULAR, 0); Ref(id); return new AssignExpr(new NameExpr(id), init, 0, val);