diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c index 8cabb3506b34b0b5175ddeca4ed106f7df352003..0937ce8e4be2a59ee63ea2220c22888ee3db3226 100644 --- a/pd/src/g_canvas.c +++ b/pd/src/g_canvas.c @@ -43,6 +43,19 @@ struct _canvasenvironment t_namelist *ce_path; /* search path */ }; +t_canvasenvironment *dummy_canvas_env(const char *dir) +{ + static t_canvasenvironment dummy_env = { + .ce_dir = NULL, + .ce_argc = 0, + .ce_argv = NULL, + .ce_dollarzero = 0, + .ce_path = NULL + }; + dummy_env.ce_dir = gensym(dir); + return &dummy_env; +} + #define GLIST_DEFCANVASWIDTH 450 #define GLIST_DEFCANVASHEIGHT 300 diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h index 44ee4e4ab581c2ae9ea79e8ef07292400260780a..9a56e360c72ff658121b51c7bfaf061a4486b66b 100644 --- a/pd/src/g_canvas.h +++ b/pd/src/g_canvas.h @@ -76,6 +76,8 @@ EXTERN_STRUCT _tscalar; EXTERN_STRUCT _canvasenvironment; #define t_canvasenvironment struct _canvasenvironment +extern t_canvasenvironment *dummy_canvas_env(const char *dir); + EXTERN_STRUCT _fielddesc; #define t_fielddesc struct _fielddesc diff --git a/pd/src/g_editor.c b/pd/src/g_editor.c index 50f8d035ca87cdd2b14f98c56e1721c33f68764b..bc78a63dd5fa6888a0c22b950574c32f761c11f6 100644 --- a/pd/src/g_editor.c +++ b/pd/src/g_editor.c @@ -2360,7 +2360,7 @@ static void abstracthandler_callback(t_abstracthandler *x, t_symbol *s) /* save the subpatch into a separated pd file */ t_atom at[3]; SETSYMBOL(at, gensym(filename)); SETSYMBOL(at+1, gensym(dir)); SETFLOAT(at+2, 0.f); - x->tarjet->gl_env = 0xF1A6; /* gl_env is set to non-zero in order to save the subcanvas as a root canvas */ + x->tarjet->gl_env = dummy_canvas_env(dir); /* gl_env is set to non-zero in order to save the subcanvas as a root canvas */ typedmess(&x->tarjet->gl_pd, gensym("savetofile"), 3, at); x->tarjet->gl_env = 0;