From 7bed56eca884dca7603b52fce0fd1930568bc17e Mon Sep 17 00:00:00 2001 From: Jonathan Wilkes <jon.w.wilkes@gmail.com> Date: Fri, 4 Aug 2017 18:11:57 -0400 Subject: [PATCH] make [declare -lib] handle absolute paths (and namespace-prefixed paths) consistent with object boxes --- pd/src/g_canvas.c | 9 ++++++++- pd/src/m_class.c | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index c0b10036b..e9c8f2d27 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 54cfa965d..062746561 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); -- GitLab