From 8053a063e952c8756e7b2cc16d8016a2a5a48dc4 Mon Sep 17 00:00:00 2001
From: Guillem <guillembartrina@gmail.com>
Date: Thu, 20 Aug 2020 20:44:18 +0200
Subject: [PATCH] change local ab definition from 'bash-<name>' to '@<name>'

---
 pd/src/g_canvas.c | 22 ++++------------------
 1 file changed, 4 insertions(+), 18 deletions(-)

diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index ef0f85e6a..1d00e47ef 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -2229,28 +2229,14 @@ static void canvas_abpush(t_canvas *x, t_symbol *s, int argc, t_atom *argv)
     pd_free(&x->gl_pd);
 }
 
-static int ab_is_local(t_canvas *x, t_symbol *s)
-{
-    int num;
-    char *name = s->s_name, *end;
-    if((end = strchr(name, '-')))
-    {
-        *end = '\0';
-        num = atoi(name);
-        *end = '-';
-        return (num == canvas_getdollarzero(&x->gl_pd));
-    }
-    return (0);
-}
-
 static t_symbol *ab_extend_name(t_canvas *x, t_symbol *s)
 {
-    char res[MAXPDSTRING], *beg = strchr(s->s_name, '-');
+    char res[MAXPDSTRING];
     t_canvas *next = canvas_getrootfor(x);
     if(next->gl_isab)
-        sprintf(res, "%s#$0-%s", next->gl_absource->ad_name->s_name, beg+1);
+        sprintf(res, "%s#%s", next->gl_absource->ad_name->s_name, s->s_name);
     else
-        sprintf(res, "$0-%s", beg+1);
+        strcpy(res, s->s_name);
     return gensym(res);
 }
 
@@ -2282,7 +2268,7 @@ static void *ab_new(t_symbol *s, int argc, t_atom *argv)
         t_symbol *name = (argc ? argv[0].a_w.w_symbol : gensym("(ab)"));
         t_ab_definition *source;
 
-        if(ab_is_local(c, name))
+        if(name->s_name[0] == '@') /* is local ab */
             name = ab_extend_name(c, name);
 
         if(!(source = canvas_find_ab(c, name)))
-- 
GitLab