diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index db625fe04836ecff19f293c504829c1b849594cc..0a3ba8dabd58134b96f906983283d8635ff85d5d 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -3250,6 +3250,10 @@ int canvas_doconnect_doit(t_canvas *x, t_gobj *y1, t_gobj *y2, int closest1, int error("preset_node does not work with messages."); return(1); } + if (obj_noutlets(ob2) == 0) { + error("preset_node does not work with objects with zero or undefined number of outlets\n"); + return(1); + } } // now check if explicit user-made connection into preset_node is other than message @@ -3307,6 +3311,7 @@ int canvas_doconnect_doit(t_canvas *x, t_gobj *y1, t_gobj *y2, int closest1, int canvas_getindex(x, &ob1->ob_g), closest1, canvas_getindex(x, &ob2->ob_g), closest2), "connect");*/ + if (create_undo) { canvas_undo_add(x, 1, "connect", canvas_undo_set_connect(x, canvas_getindex(x, &ob1->ob_g), closest1, @@ -3316,6 +3321,7 @@ int canvas_doconnect_doit(t_canvas *x, t_gobj *y1, t_gobj *y2, int closest1, int // add auto-connect back to preset_node object // (by this time we know we are connecting only to legal objects who have at least one outlet) if (pd_class(&y1->g_pd) == preset_node_class) { + //fprintf(stderr,"gotta do auto-connect back to preset_node\n"); if (!canvas_isconnected(x, ob2, 0, ob1, 0) && pd_class(&y2->g_pd) != print_class) { oc2 = obj_connect(ob2, 0, ob1, 0); @@ -3324,6 +3330,7 @@ int canvas_doconnect_doit(t_canvas *x, t_gobj *y1, t_gobj *y2, int closest1, int //else // fprintf(stderr,"error: already connected (this happens when loading from file and is ok)\n"); } + return(0); } @@ -5337,8 +5344,12 @@ void canvas_connect(t_canvas *x, t_floatarg fwhoout, t_floatarg foutno, /* now check for illegal connections between preset_node object and other non-supported objects */ if (pd_class(&src->g_pd) == preset_node_class) { if (pd_class(&sink->g_pd) == message_class) { - error("preset_node does not work with messages."); - goto bad; + error("preset_node does not work with messages."); + goto bad; + } + if (obj_noutlets(pd_checkobject(&sink->g_pd)) == 0) { + error("preset_node does not work with objects with zero or undefined number of outlets\n"); + goto bad; } }