bugs or features - inlet/outlet order

Winfried Ritsch ritsch at iem.mhsg.ac.at
Fri Mar 13 00:18:23 CET 1998


[...] 
 > BUG:
 > 
 > if you accidently make a bang object, instead of a bang
 > message then pd "segmentation fault"s on sgis and linux... so the
 > symbol bang is identified as object, which isnt one:
 > 
 > 		  Consistency check failed: canvas_setargs
 > 
 > 		  Program received signal SIGSEGV, Segmentation fault.
 > 		  0xfa3a510 in memmove ()
 > 
 > 

Possible Solution:

making a bang object (maybe in x_connective.c) x_bang.c:
send a anything in and get a bang out (like [t b])


--- cut here ---

/* -------------------------- bang ------------------------------ */
static t_class *pdbang_class;

typedef struct _pdbang
{
    t_object x_obj;
} t_pdbang;

static void *pdbang_new(t_pd *dummy)
{
    t_pdbang *x = (t_pdbang *)pd_new(pdbang_class);
    outlet_new(&x->x_obj, &s_bang);
    newest = &x->x_obj.ob_pd;
    return (x); 
}


static void pdbang_bang(t_pdbang *x)
{
    outlet_bang(x->x_obj.ob_outlet);
}

static void pdbang_int(t_pdbang *x, t_int n)
{
    outlet_bang(x->x_obj.ob_outlet);
}

static void pdbang_float(t_pdbang *x, t_float f)
{
    outlet_bang(x->x_obj.ob_outlet);
}

void pdbang_setup(void)
{
    pdbang_class = class_new(gensym("bang"), (t_newmethod)pdbang_new, 0,
    	sizeof(t_pdbang), 0, 0);
    class_addcreator(pdbang_new, gensym("b"), 0);
    class_addbang(pdbang_class, pdbang_bang);
    class_addint(pdbang_class, pdbang_int);
    class_addfloat(pdbang_class, (t_method)pdbang_float);
}
--- cut here --

I hope I catched millers syntax style ;-)

...also add bang_setup() in  x_connective_setup(void).



More information about the Pd-list mailing list