diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index c0b10036b7baf97e43a5b940132a9764e778c246..e9c8f2d27c0b4a8a0e212cc07fcf79a6df5cb2ed 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -1922,6 +1922,7 @@ static void canvas_stdlib(t_canvasenvironment *e, char *stdlib) } } +extern t_symbol *class_loadsym; /* name under which an extern is invoked */ void canvas_declare(t_canvas *x, t_symbol *s, int argc, t_atom *argv) { @@ -1948,7 +1949,13 @@ void canvas_declare(t_canvas *x, t_symbol *s, int argc, t_atom *argv) } else if ((argc > i+1) && !strcmp(flag, "-lib")) { - sys_load_lib(x, atom_getsymbolarg(i+1, argc, argv)->s_name); + /* set class_loadsym in case we're loading a library by + absolute or namespace-prefixed path. Not sure yet + exactly how stdlib works so I haven't touched that + one... */ + class_loadsym = atom_getsymbolarg(i+1, argc, argv); + sys_load_lib(x, class_loadsym->s_name); + class_loadsym = NULL; i++; } else if ((argc > i+1) && !strcmp(flag, "-stdlib")) diff --git a/pd/src/m_class.c b/pd/src/m_class.c index 54cfa965d54aef6e730e40c478d066be22ca08ca..062746561e65b8cc56bf580fddbd64bc912f8a9e 100644 --- a/pd/src/m_class.c +++ b/pd/src/m_class.c @@ -26,7 +26,7 @@ #define snprintf sprintf_s #endif -static t_symbol *class_loadsym; /* name under which an extern is invoked */ +t_symbol *class_loadsym; /* name under which an extern is invoked */ static void pd_defaultfloat(t_pd *x, t_float f); static void pd_defaultblob(t_pd *x, t_blob *st); /* MP20061226 blob type */ static void pd_defaultlist(t_pd *x, t_symbol *s, int argc, t_atom *argv);