diff --git a/src/g_editor.c b/src/g_editor.c
index 5d76acb26f528753cf450a0df9e521bbc94d9ded..9bb010eb0d0dbd237240abdf24e2f193317437df 100644
--- a/src/g_editor.c
+++ b/src/g_editor.c
@@ -68,7 +68,10 @@ extern void glob_preset_node_list_check_loc_and_update(void);
 // for preset_node
 extern t_class *text_class;
 
-int do_not_redraw = 0;
+int do_not_redraw = 0;     // used to optimize redrawing
+
+int connect_exception = 0; // used when autopatching to bypass check whether one is trying to connect signal with non-signal nlet
+						   // since this is impossible to figure out when the newly created object is an empty one
 
 struct _outlet
 {
@@ -4699,8 +4702,8 @@ void canvas_connect(t_canvas *x, t_floatarg fwhoout, t_floatarg foutno,
         !(objsink = pd_checkobject(&sink->g_pd)))
             goto bad;
 
-        /* check signal outlets don't try to connect to non-signal inlets */
-	if (obj_issignaloutlet(objsrc, outno) && !obj_issignalinlet(objsink, inno)) {
+        /* check signal outlets don't try to connect to non-signal inlet, but only do so when there is no exception active due to autopatching */
+	if (!connect_exception && obj_issignaloutlet(objsrc, outno) && !obj_issignalinlet(objsink, inno)) {
 		error("cannot connect signal outlet to control inlet");
 		goto bad;
     }
diff --git a/src/g_text.c b/src/g_text.c
index b05a2b77eaa16ab2811699fbbb3ecabc41fc7165..88817db5117238760d56d6530e73822037c4d992 100644
--- a/src/g_text.c
+++ b/src/g_text.c
@@ -247,6 +247,8 @@ void canvas_howputnew(t_canvas *x, int *connectp, int *xpixp, int *ypixp,
     they're invoked from the gui; when pasting or restoring from a file, we
     get at least x and y. */
 
+EXTERN int connect_exception;
+
 void canvas_obj(t_glist *gl, t_symbol *s, int argc, t_atom *argv)
 {
 	//fprintf(stderr,"canvas_obj\n");
@@ -271,7 +273,9 @@ void canvas_obj(t_glist *gl, t_symbol *s, int argc, t_atom *argv)
         canvas_objtext(gl, xpix, ypix, 1, b);
         if (connectme) {
 			//fprintf(stderr,"canvas_obj calls canvas_connect\n");
+			connect_exception = 1;
             canvas_connect(gl, indx, 0, nobj, 0);
+			connect_exception = 0;
 		}
         else {
 			//fprintf(stderr,"canvas_obj calls canvas_startmotion\n");