diff --git a/pd/src/d_ugen.c b/pd/src/d_ugen.c index 55213566ec0aa6c3a209036f29d06630ca786588..da6c94aebe29b5cf588294741adb26a934e54067 100644 --- a/pd/src/d_ugen.c +++ b/pd/src/d_ugen.c @@ -686,15 +686,9 @@ void ugen_connect(t_dspcontext *dc, t_object *x1, int outno, t_object *x2, error("object with signal outlets but no DSP method?"); /* check if it's a "text" (i.e., object wasn't created) - if so fail silently */ - t_text *t2 = (t_text *)x2; - // The following only happens if the DAC is on while connecting - // objects. If this is not yet initialized object we don't - // really know if its inlet is signal or not, so we don't post - // the error. - if (pd_class(&t2->te_pd) != text_class || - (pd_class(&t2->te_pd) == text_class && t2->te_type == T_TEXT)) - pd_error(u1->u_obj, - "signal outlet connect to nonsignal inlet (ignored)"); + else if (!(x2 && (pd_class(&x2->ob_pd) == text_class))) + pd_error(u1->u_obj, + "signal outlet connect to nonsignal inlet (ignored)"); return; } if (sigoutno < 0 || sigoutno >= u1->u_nout || siginno >= u2->u_nin) @@ -743,7 +737,7 @@ static void ugen_doit(t_dspcontext *dc, t_ugenbox *u) is set. We don't yet know if a subcanvas will be "blocking" so there we delay new signal creation, which will be handled by calling signal_setborrowed in the ugen_done_graph routine below. */ - int nonewsigs = (class == canvas_class || + int nonewsigs = (class == canvas_class || ((class == vinlet_class) && !(dc->dc_reblock))); /* when we encounter a subcanvas or a signal outlet, suppress freeing the input signals as they may be "borrowed" for the super or sub