From 53bed596e779ce1392157e311ba03dbfa08d0cc5 Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Fri, 11 Sep 2020 13:58:12 +0200 Subject: [PATCH] autofree: do not free _ vars --- vlib/v/gen/cgen.v | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/vlib/v/gen/cgen.v b/vlib/v/gen/cgen.v index c391c79eab..f31ac4b21f 100644 --- a/vlib/v/gen/cgen.v +++ b/vlib/v/gen/cgen.v @@ -1328,9 +1328,12 @@ fn (mut g Gen) gen_assign_stmt(assign_stmt ast.AssignStmt) { // Free the old value assigned to this string var (only if it's `str = [new value]`) if g.pref.autofree && assign_stmt.op == .assign && assign_stmt.left_types.len == 1 && assign_stmt.left_types[0] == table.string_type && assign_stmt.left[0] is ast.Ident { - g.write('string_free(&') - g.expr(assign_stmt.left[0]) - g.writeln('); // free str on re-assignment') + ident := assign_stmt.left[0] as ast.Ident + if ident.name != '_' { + g.write('string_free(&') + g.expr(assign_stmt.left[0]) + g.writeln('); // free str on re-assignment') + } } // json_test failed w/o this check if return_type != table.void_type && return_type != 0 {