diff --git a/pd/src/m_class.c b/pd/src/m_class.c index f5926e98e93f02b65662fbc48801fa94954f60f5..54cfa965d54aef6e730e40c478d066be22ca08ca 100644 --- a/pd/src/m_class.c +++ b/pd/src/m_class.c @@ -318,6 +318,18 @@ void class_addcreator(t_newmethod newmethod, t_symbol *s, va_end(ap); class_addmethod(pd_objectmaker, (t_method)newmethod, s, vec[0], vec[1], vec[2], vec[3], vec[4], vec[5]); + if (class_loadsym) + { + /* if we're loading an extern it might have been invoked by a + longer file name; in this case, make this an admissible name + too. */ + char *loadstring = class_loadsym->s_name, + l1 = strlen(s->s_name), l2 = strlen(loadstring); + if (l2 > l1 && !strcmp(s->s_name, loadstring + (l2 - l1))) + class_addmethod(pd_objectmaker, (t_method)newmethod, + class_loadsym, + vec[0], vec[1], vec[2], vec[3], vec[4], vec[5]); + } } void class_addmethod(t_class *c, t_method fn, t_symbol *sel,