From 9545397540a80010def7b2d6028715faf1ec0506 Mon Sep 17 00:00:00 2001 From: mescalinum Date: Fri, 28 Aug 2009 16:46:43 +0000 Subject: use Tcl reference counters properly -- solved segfaults svn path=/trunk/externals/tclpd/; revision=12129 --- tcl_extras.cxx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'tcl_extras.cxx') diff --git a/tcl_extras.cxx b/tcl_extras.cxx index 1551c7f..e277e60 100644 --- a/tcl_extras.cxx +++ b/tcl_extras.cxx @@ -17,21 +17,22 @@ static void *tclpd_init (t_symbol *classsym, int ac, t_atom *at) { t_tcl *self = (t_tcl *)pd_new(qlass); char s[32]; sprintf(s,"pd%06lx",cereal++); - self->self = Tcl_NewStringObj(s,strlen(s)); - object_table[string(s)] = (t_pd*)self; + self->self = Tcl_NewStringObj(s, -1); Tcl_IncrRefCount(self->self); + object_table[string(s)] = (t_pd*)self; Tcl_Obj *av[ac+2]; - av[0] = Tcl_NewStringObj(name,strlen(name)); + av[0] = Tcl_NewStringObj(name, -1); + Tcl_IncrRefCount(av[0]); av[1] = self->self; for(int i=0; i outlet_number Tcl_AppendToObj(av[1],"_",1); Tcl_AppendToObj(av[1],s->s_name,strlen(s->s_name)); // selector + Tcl_IncrRefCount(av[1]); for(int i=0; i