--- libelwix/src/vars.c 2013/08/22 15:21:25 1.5 +++ libelwix/src/vars.c 2013/11/14 21:31:28 1.6 @@ -3,7 +3,7 @@ * by Michael Pounov * * $Author: misho $ -* $Id: vars.c,v 1.5 2013/08/22 15:21:25 misho Exp $ +* $Id: vars.c,v 1.6 2013/11/14 21:31:28 misho Exp $ * ************************************************************************** The ELWIX and AITNET software is distributed under the following @@ -409,11 +409,25 @@ ait_clrVars(array_t * __restrict vars) void ait_freeVars(array_t ** __restrict vars) { + register int i; + ait_val_t *v; + if (!vars || !*vars) return; - ait_clrVars(*vars); - array_Free(*vars); + for (i = 0; i < array_Size(*vars); i++) + if ((v = array(*vars, i, ait_val_t*))) { + /* free memory if isn't zero copy */ + if (!AIT_IN(v)) { + AIT_FREE_VAL(v); + if ((*vars)->arr_data[i]) + e_free((*vars)->arr_data[i]); + } else + AIT_FREE_VAL(v); + (*vars)->arr_data[i] = NULL; + } + (*vars)->arr_last = -1; + array_Destroy(vars); }