aboutsummaryrefslogtreecommitdiff
path: root/pd/src/x_connective.c
diff options
context:
space:
mode:
Diffstat (limited to 'pd/src/x_connective.c')
-rw-r--r--pd/src/x_connective.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/pd/src/x_connective.c b/pd/src/x_connective.c
index b9093f46..abd09317 100644
--- a/pd/src/x_connective.c
+++ b/pd/src/x_connective.c
@@ -508,6 +508,8 @@ static void route_list(t_route *x, t_symbol *sel, int argc, t_atom *argv)
{
t_float f;
if (!argc) return;
+ if (argv->a_type != A_FLOAT)
+ goto rejected;
f = atom_getfloat(argv);
for (nelement = x->x_nelement, e = x->x_vec; nelement--; e++)
if (e->e_w.w_float == f)
@@ -569,6 +571,7 @@ static void route_list(t_route *x, t_symbol *sel, int argc, t_atom *argv)
}
}
}
+ rejected:
outlet_list(x->x_rejectout, 0, argc, argv);
}
@@ -600,6 +603,12 @@ static void *route_new(t_symbol *s, int argc, t_atom *argv)
e->e_w.w_float = atom_getfloatarg(n, argc, argv);
else e->e_w.w_symbol = atom_getsymbolarg(n, argc, argv);
}
+ if (argc == 1)
+ {
+ if (argv->a_type == A_FLOAT)
+ floatinlet_new(&x->x_obj, &x->x_vec->e_w.w_float);
+ else symbolinlet_new(&x->x_obj, &x->x_vec->e_w.w_symbol);
+ }
x->x_rejectout = outlet_new(&x->x_obj, &s_list);
return (x);
}
@@ -1002,8 +1011,7 @@ static void trigger_anything(t_trigger *x, t_symbol *s, int argc, t_atom *argv)
outlet_bang(u->u_outlet);
else if (u->u_type == TR_ANYTHING)
outlet_anything(u->u_outlet, s, argc, argv);
- else pd_error(x, "trigger: can only convert 's' to 'b' or 'a'",
- s->s_name);
+ else pd_error(x, "trigger: can only convert 's' to 'b' or 'a'");
}
}
@@ -1260,12 +1268,15 @@ static void makefilename_float(t_makefilename *x, t_floatarg f)
char buf[MAXPDSTRING];
if (x->x_accept == A_FLOAT) {
if (x->x_intconvert)
- sprintf(buf, x->x_format->s_name, (int)f);
- else
- sprintf(buf, x->x_format->s_name, f);
+ sprintf(buf, x->x_format->s_name, (int)f);
+ else sprintf(buf, x->x_format->s_name, f);
}
else
- sprintf(buf, x->x_format->s_name, "");
+ {
+ char buf2[MAXPDSTRING];
+ sprintf(buf2, "%g", f);
+ sprintf(buf, x->x_format->s_name, buf2);
+ }
if (buf[0]!=0)
outlet_symbol(x->x_obj.ob_outlet, gensym(buf));
}