From 5fc23bb61cf7b2a0e1116c63ecbf3c0c3bc36940 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jancsika@yahoo.com>
Date: Tue, 7 Oct 2014 18:25:02 -0400
Subject: [PATCH] fix some crashers in external objects

---
 externals/ext13/cdplayer.c        |  2 +-
 externals/ggee/control/constant.c | 36 +++++++++++++++++++------------
 2 files changed, 23 insertions(+), 15 deletions(-)

diff --git a/externals/ext13/cdplayer.c b/externals/ext13/cdplayer.c
index 95293012d..24b8f1020 100644
--- a/externals/ext13/cdplayer.c
+++ b/externals/ext13/cdplayer.c
@@ -24,7 +24,7 @@ typedef struct _cdplayer
 
 static void *cdplayer_new()
 {
-    char* devicename;
+    char devicename[MAXPDSTRING];
     int fd;
     t_cdplayer *x = (t_cdplayer *)pd_new(cdplayer_class);
 
diff --git a/externals/ggee/control/constant.c b/externals/ggee/control/constant.c
index 877326bb2..0584344d3 100644
--- a/externals/ggee/control/constant.c
+++ b/externals/ggee/control/constant.c
@@ -34,18 +34,21 @@ static void *constant_new(t_symbol* s)
     t_constant *x = (t_constant *)pd_new(constant_class);
     
     if (s == &s_)
-	 x->x_constant = M_PI;
-
-    if (!strcmp(s->s_name,"PI"))
-	 x->x_constant = M_PI;
-
-    if (!strcmp(s->s_name,"TWOPI"))
-	 x->x_constant = 2*M_PI;
-
-    if (!strcmp(s->s_name,"e"))
-	 x->x_constant = exp(1.0);
-	 
-
+        x->x_constant = M_PI;
+    else if (!strcmp(s->s_name,"pi"))
+        x->x_constant = M_PI;
+    else if (!strcmp(s->s_name,"2pi"))
+        x->x_constant = 2*M_PI;
+    else if (!strcmp(s->s_name,"e"))
+        x->x_constant = exp(1.0);
+    else if (!strcmp(s->s_name,"M_PI"))
+        x->x_constant = M_PI;
+    else if (!strcmp(s->s_name,"PI"))
+        x->x_constant = M_PI;
+    else if (!strcmp(s->s_name,"TWOPI"))
+        x->x_constant = 2*M_PI;
+    else
+        pd_error(x, "Unsupported constant '%s'", s->s_name);
 
     outlet_new(&x->x_obj, &s_float);
     return (x);
@@ -53,8 +56,13 @@ static void *constant_new(t_symbol* s)
 
 void constant_setup(void)
 {
-    constant_class = class_new(gensym("constant"), (t_newmethod)constant_new, 0,
-				sizeof(t_constant), 0,0);
+    constant_class = class_new(gensym("constant"),
+                               (t_newmethod)constant_new,
+                               0,
+                               sizeof(t_constant),
+                               0,
+                               A_DEFSYMBOL, 
+                               0);
     class_addbang(constant_class,constant_bang);
 }
 
-- 
GitLab