diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index 99545620c80a6ca54a821aeded59d0c2db804033..4f484772fbba28e8c84f68f6692b1054ff49b3b7 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -2215,14 +2215,14 @@ static void *ab_new(t_symbol *s, int argc, t_atom *argv) t_canvas *c = canvas_getcurrent(); - if (!argc || argv[0].a_type != A_SYMBOL) + if (argc && argv[0].a_type != A_SYMBOL) { - error("ab_new: not recognized syntax. Usage: ab <name>"); + error("ab_new: ab name must be a symbol"); newest = 0; } else { - t_symbol *name = argv[0].a_w.w_symbol; + t_symbol *name = (argc ? argv[0].a_w.w_symbol : gensym("(ab)")); t_ab_definition *source; if(!(source = canvas_find_ab(c, name))) @@ -2234,7 +2234,7 @@ static void *ab_new(t_symbol *s, int argc, t_atom *argv) if(canvas_register_ab(c, source)) { - newest = do_create_ab(source, argc-1, argv+1); + newest = do_create_ab(source, (argc ? argc-1 : 0), (argc ? argv+1 : 0)); source->ad_numinstances++; } else