int release_key_data(void) { if (NULL != g_st_ini_file_data) fts_free(g_st_ini_file_data); return 0; }
/* method definitions */ static void expr_ff(t_expr *x) { t_exprproxy *y; int i; y = x->exp_proxy; while (y) { x->exp_proxy = y->p_next; #ifdef PD pd_free(&y->p_pd); #else /*MSP */ /* SDY find out what needs to be called for MSP */ #endif y = x->exp_proxy; } for (i = 0 ; i < x->exp_nexpr; i++) if (x->exp_stack[i]) fts_free(x->exp_stack[i]); /* * SDY free all the allocated buffers here for expr~ and fexpr~ * check to see if there are others */ for (i = 0; i < MAX_VARS; i++) { if (x->exp_p_var[i]) fts_free(x->exp_p_var[i]); if (x->exp_p_res[i]) fts_free(x->exp_p_res[i]); if (x->exp_tmpres[i]) fts_free(x->exp_tmpres[i]); } }
static void expr_dsp(t_expr *x, t_signal **sp) { int i, nv; int newsize; x->exp_error = 0; /* reset all errors */ newsize = (x->exp_vsize != sp[0]->s_n); x->exp_vsize = sp[0]->s_n; /* record the vector size */ for (i = 0; i < x->exp_nexpr; i++) { x->exp_res[i].ex_type = ET_VEC; x->exp_res[i].ex_vec = sp[x->exp_nivec + i]->s_vec; } for (i = 0, nv = 0; i < MAX_VARS; i++) /* * the first inlet is always a signal * * SDY We are warning the user till this limitation * is taken away from pd */ if (!i || x->exp_var[i].ex_type == ET_VI || x->exp_var[i].ex_type == ET_XI) { if (nv >= x->exp_nivec) { post("expr_dsp int. err nv = %d, x->exp_nive = %d", nv, x->exp_nivec); abort(); } x->exp_var[i].ex_vec = sp[nv]->s_vec; nv++; } /* we always have one inlet but we may not use it */ if (nv != x->exp_nivec && (nv != 0 || x->exp_nivec != 1)) { post("expr_dsp internal error 2 nv = %d, x->exp_nive = %d", nv, x->exp_nivec); abort(); } dsp_add(expr_perform, 1, (t_int *) x); /* * The buffer are now being allocated for expr~ and fexpr~ * because if we have more than one expression we need the * temporary buffers, The save buffers are not really needed if (!IS_FEXPR_TILDE(x)) return; */ /* * if we have already allocated the buffers and we have a * new size free all the buffers */ if (x->exp_p_res[0]) { if (!newsize) return; /* * if new size, reallocate all the previous buffers for fexpr~ */ for (i = 0; i < x->exp_nexpr; i++) { fts_free(x->exp_p_res[i]); fts_free(x->exp_tmpres[i]); } for (i = 0; i < MAX_VARS; i++) fts_free(x->exp_p_var[i]); } for (i = 0; i < x->exp_nexpr; i++) { x->exp_p_res[i] = fts_calloc(x->exp_vsize, sizeof (t_float)); x->exp_tmpres[i] = fts_calloc(x->exp_vsize, sizeof (t_float)); } for (i = 0; i < MAX_VARS; i++) x->exp_p_var[i] = fts_calloc(x->exp_vsize, sizeof (t_float)); }
void freeFTSObject(robj *o) { fts_free((fts_t *) o->ptr); }