fix garbage collection of vectors returned by ft_evaluate()

This commit is contained in:
rlar 2016-03-26 18:39:00 +01:00
parent 9652cc46c8
commit 059f2b6c0d
3 changed files with 6 additions and 7 deletions

View File

@ -108,7 +108,7 @@ com_let(wordlist *wl)
indices[numdims++] = j;
/* va: garbage collection for t, if pnode `names' is no simple value */
if (names != NULL && names->pn_value == NULL && t != NULL)
if (names && !names->pn_value && t)
vec_free(t);
free_pnode(names); /* frees also t, if pnode `names' is simple value */
@ -235,7 +235,7 @@ com_let(wordlist *wl)
quit:
/* va: garbage collection for t, if pnode `names' is no simple value */
if (names != NULL && names->pn_value == NULL && t != NULL)
if (names && !names->pn_value && t)
vec_free(t);
free_pnode(names); /* frees also t, if pnode `names' is simple value */
tfree(p);

View File

@ -317,7 +317,7 @@ cp_istrue(wordlist *wl)
rv = !vec_iszero(v);
/* va: garbage collection for v, if pnode names is no simple value */
if (names->pn_value == NULL && v != NULL)
if (names && !names->pn_value && v)
vec_free(v);
free_pnode(names); /* free also v, if pnode names is simple value */

View File

@ -1350,11 +1350,10 @@ com_alter_common(wordlist *wl, int do_model)
if_setparam(ft_curckt->ci_ckt, &dev, param, dv, do_model);
/* va: garbage collection for dv, if pnode names is no simple value */
if (names->pn_value == NULL && dv != NULL)
vec_free(dv);
done:
/* va: garbage collection for dv, if pnode names is no simple value */
if (names && !names->pn_value && dv)
vec_free(dv);
free_pnode(names); /* free also dv, if pnode names is simple value */
}