From e557563c69a4be22a71d4402feae8dc942fbb739 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Feb 2020 13:42:25 +0100 Subject: [PATCH] Expr: fix memory leak in RecordCoerceExpr::Fold() Don't add a second reference if the `rhs` variable was assigned from `def->AttrExpr()->Eval(0)`. Caused by commit af3267acc3fa7b5e7b933bf8de7124202853bfc8 --- src/Expr.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Expr.cc b/src/Expr.cc index ec62024553..4463df0432 100644 --- a/src/Expr.cc +++ b/src/Expr.cc @@ -3804,8 +3804,7 @@ Val* RecordCoerceExpr::Fold(Val* v) const if ( def ) rhs = def->AttrExpr()->Eval(0); } - - if ( rhs ) + else rhs = rhs->Ref(); assert(rhs || Type()->AsRecordType()->FieldDecl(i)->FindAttr(ATTR_OPTIONAL));