Browse Source

fix garbage collection of vectors returned by ft_evaluate()

pre-master-46
rlar 10 years ago
parent
commit
059f2b6c0d
  1. 4
      src/frontend/com_let.c
  2. 2
      src/frontend/cpitf.c
  3. 5
      src/frontend/device.c

4
src/frontend/com_let.c

@ -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);

2
src/frontend/cpitf.c

@ -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 */

5
src/frontend/device.c

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

Loading…
Cancel
Save