[PD-cvs] externals/zexy/src multiplex.c,1.3,1.4
IOhannes m zmölnig
zmoelnig at users.sourceforge.net
Thu Jun 16 13:49:09 CEST 2005
Update of /cvsroot/pure-data/externals/zexy/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv10881
Modified Files:
multiplex.c
Log Message:
fixed a memory bug that crashed [multiplex] on construction | destruction
Index: multiplex.c
===================================================================
RCS file: /cvsroot/pure-data/externals/zexy/src/multiplex.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** multiplex.c 19 May 2005 09:42:55 -0000 1.3
--- multiplex.c 16 Jun 2005 11:49:06 -0000 1.4
***************
*** 43,47 ****
typedef struct _muxproxy
{
! t_object p_ob;
t_mux *p_master;
int id;
--- 43,47 ----
typedef struct _muxproxy
{
! t_pd p_pd;
t_mux *p_master;
int id;
***************
*** 65,73 ****
t_mux *x = (t_mux *)pd_new(mux_class);
// t_muxproxy *y=(t_muxproxy*)pd_new(muxproxy_class);
- x->x_proxy = (t_muxproxy**)getbytes(sizeof(t_muxproxy*));
x->i_selected=0;
x->i_count = n;
x->in = (t_inlet **)getbytes(x->i_count * sizeof(t_inlet *));
for (n = 0; n<x->i_count; n++) {
--- 65,73 ----
t_mux *x = (t_mux *)pd_new(mux_class);
// t_muxproxy *y=(t_muxproxy*)pd_new(muxproxy_class);
x->i_selected=0;
x->i_count = n;
x->in = (t_inlet **)getbytes(x->i_count * sizeof(t_inlet *));
+ x->x_proxy = (t_muxproxy**)getbytes(x->i_count * sizeof(t_muxproxy*));
for (n = 0; n<x->i_count; n++) {
***************
*** 85,89 ****
--- 85,110 ----
static void mux_free(t_mux*x){
+ const int count = x->i_count;
+ if(x->in && x->x_proxy){
+ int n=0;
+ for(n=0; n<count; n++){
+ if(x->in[n]){
+ inlet_free(x->in[n]);
+ }
+ x->in[n]=0;
+ if(x->x_proxy[n]){
+ t_muxproxy *y=x->x_proxy[n];
+ y->p_master=0;
+ y->id=0;
+ pd_free(&y->p_pd);
+ }
+ x->x_proxy[n]=0;
+ }
+ freebytes(x->in, x->i_count * sizeof(t_inlet *));
+ freebytes(x->x_proxy, x->i_count * sizeof(t_muxproxy*));
+ }
+
+ //pd_free(&y->p_pd)
}
More information about the Pd-cvs
mailing list