From f20ab7c3039a4023f41372bfe4bde3b16d481df7 Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Fri, 16 Jul 2010 12:54:45 +0300 Subject: Move to gawk-3.0.4. --- array.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'array.c') diff --git a/array.c b/array.c index b178cd2a..4906384d 100644 --- a/array.c +++ b/array.c @@ -3,7 +3,7 @@ */ /* - * Copyright (C) 1986, 1988, 1989, 1991 - 97 the Free Software Foundation, Inc. + * Copyright (C) 1986, 1988, 1989, 1991-1999 the Free Software Foundation, Inc. * * This file is part of GAWK, the GNU implementation of the * AWK Programming Language. @@ -272,7 +272,10 @@ NODE *symbol, *subs; fatal("attempt to use scalar as array"); if (symbol->var_array == NULL) { - symbol->type = Node_var_array; + if (symbol->type != Node_var_array) { + unref(symbol->var_value); + symbol->type = Node_var_array; + } symbol->array_size = symbol->table_size = 0; /* sanity */ symbol->flags &= ~ARRAYMAXED; grow_table(symbol); @@ -360,13 +363,14 @@ NODE *symbol, *tree; last = bucket, bucket = bucket->ahnext) if (cmp_nodes(bucket->ahname, subs) == 0) break; - free_temp(subs); if (bucket == NULL) { if (do_lint) warning("delete: index `%s' not in array `%s'", subs->stptr, symbol->vname); + free_temp(subs); return; } + free_temp(subs); if (last != NULL) last->ahnext = bucket->ahnext; else -- cgit v1.2.3