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
diff --git a/pd/src/m_obj.c b/pd/src/m_obj.c
index e8632a3d9f372a3914e8a8e10640f28bcea9131b..ad9d6c6cf68bf05dbd84ca03c900c2fc59902536 100644
--- a/pd/src/m_obj.c
+++ b/pd/src/m_obj.c
@@ -691,10 +691,12 @@ int obj_siginletindex(t_object *x, int m)
 {
     int n = 0;
     t_inlet *i;
-    if (x->ob_pd->c_firstin && x->ob_pd->c_floatsignalin)
+    if (x->ob_pd->c_firstin)
     {
-        if (!m--) return (0);
-        n++;
+        if (!m--)
+            return (0);
+        if (x->ob_pd->c_floatsignalin)
+            n++;
     }
     for (i = x->ob_inlet; i; i = i->i_next, m--)
         if (i->i_symfrom == &s_signal)
@@ -750,21 +752,18 @@ int obj_issignaloutlet(t_object *x, int m)
 
 t_float *obj_findsignalscalar(t_object *x, int m)
 {
-    int n = 0;
     t_inlet *i;
     if (x->ob_pd->c_firstin && x->ob_pd->c_floatsignalin)
     {
         if (!m--)
             return (x->ob_pd->c_floatsignalin > 0 ?
                 (t_float *)(((char *)x) + x->ob_pd->c_floatsignalin) : 0);
-        n++;
     }
-    for (i = x->ob_inlet; i; i = i->i_next, m--)
+    for (i = x->ob_inlet; i; i = i->i_next)
         if (i->i_symfrom == &s_signal)
     {
-        if (m == 0)
+        if (m-- == 0)
             return (&i->i_un.iu_floatsignalvalue);
-        n++;
     }
     return (0);
 }