From d176354866603e3d803b21a8c3e024eeedc9d9cb Mon Sep 17 00:00:00 2001
From: Guillem <guillembartrina@gmail.com>
Date: Sun, 27 Sep 2020 17:32:59 +0200
Subject: [PATCH] fix abinfo error message on patch loading

---
 pd/src/g_canvas.c    | 2 +-
 pd/src/g_canvas.h    | 1 +
 pd/src/x_interface.c | 9 +++++++--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/pd/src/g_canvas.c b/pd/src/g_canvas.c
index 94807c27a..004eab33a 100644
--- a/pd/src/g_canvas.c
+++ b/pd/src/g_canvas.c
@@ -2508,7 +2508,7 @@ static t_symbol *ab_extend_name(t_canvas *x, t_symbol *s)
     return gensym(res);
 }
 
-static int abframe = 0;
+int abframe = 0;
 static void canvas_abframe(t_canvas *x, t_float val)
 {
     abframe = val;
diff --git a/pd/src/g_canvas.h b/pd/src/g_canvas.h
index 9d1561421..8be84e871 100644
--- a/pd/src/g_canvas.h
+++ b/pd/src/g_canvas.h
@@ -580,6 +580,7 @@ EXTERN void canvas_unsetcurrent(t_canvas *x);
 EXTERN t_symbol *canvas_realizedollar(t_canvas *x, t_symbol *s);
 EXTERN t_canvas *canvas_getrootfor(t_canvas *x);
 EXTERN t_canvas *canvas_getrootfor_ab(t_canvas *x);
+EXTERN int abframe;
 EXTERN void canvas_dirty(t_canvas *x, t_floatarg n);
 EXTERN int canvas_getfont(t_canvas *x);
 typedef int (*t_canvasapply)(t_canvas *x, t_int x1, t_int x2, t_int x3);
diff --git a/pd/src/x_interface.c b/pd/src/x_interface.c
index 80a8c85ad..6753ea626 100644
--- a/pd/src/x_interface.c
+++ b/pd/src/x_interface.c
@@ -1652,8 +1652,13 @@ void *abinfo_new(void)
     }
     else
     {
-        error("abinfo: only instantiable inside an ab object");
-        x = 0;
+        if(!abframe)
+        {
+            error("abinfo: only instantiable inside an ab object");
+            x = 0;
+        }
+        else
+            x = pd_new(text_class);
     }
     return (x);
 }
-- 
GitLab