From 88a4acd9c21bb44381fe25ce212e976f92a85110 Mon Sep 17 00:00:00 2001
From: Ivica Ico Bukvic <ico@vt.edu>
Date: Wed, 27 Feb 2013 16:44:11 -0500
Subject: [PATCH] Fixed segfault bugs with ascseq and ascwave externals

---
 externals/cxc/ascseq.c  |  5 +++++
 externals/cxc/ascwave.c | 14 +++++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/externals/cxc/ascseq.c b/externals/cxc/ascseq.c
index 2a6e21ca3..33e8042a6 100644
--- a/externals/cxc/ascseq.c
+++ b/externals/cxc/ascseq.c
@@ -56,6 +56,11 @@ void ascseq_anything(t_ascseq *x, t_symbol* s, t_int argc, t_atom* argv)
   len = 0;
   x->x_bla[0] = '\0';
 
+  if (!s) { // we sent a bang, so report and ignore it)
+	error("ascseq: ignoring bang message");
+	return;
+  }
+
   //symbol_string(s->s_name, tmp, 1024);
   if(!strstr(s->s_name,LISTSEL)) {
     strcat(x->x_bla,s->s_name);
diff --git a/externals/cxc/ascwave.c b/externals/cxc/ascwave.c
index 9b2031b86..22f85b852 100644
--- a/externals/cxc/ascwave.c
+++ b/externals/cxc/ascwave.c
@@ -68,7 +68,7 @@ void ascwave_ft1(t_ascwave *x, t_floatarg g)
   xip = (char*)malloc((sz+1)*sizeof(char));
   xap = (char*)malloc((sz+1)*sizeof(char));
 
-  for (i = 0;i <= sz; ++i) {
+  for (i = 0; i < sz; ++i) {
     if (i == sz-1) {
       xip[i] = lchr;
     } else {
@@ -86,17 +86,21 @@ void ascwave_ft1(t_ascwave *x, t_floatarg g)
       xap[i] = i % 80 + 33;
   }
   //  xip[sz] = schr;//'\n';
-  xip[sz+1] = '\0';
+  xip[sz] = '\0';
   //xap[sz] = schr;//'\n';
-  xap[sz+1] = '\0';
+  xap[sz] = '\0';
   //  poststring(xip);
   //  post("ft1: %f, %d", x->x_jodel, sz);
   //  outlet_float(x->t_ob.ob_outlet, x->x_jodel + x->x_jodel);
   outlet_symbol(x->t_ob.ob_outlet, gensym(xip));
-  for (i = 0; i < g-2;++i)
+  for (i = 0; i < g-2;++i) {
+	fprintf(stderr,"i=%d ", i);
     outlet_symbol(x->t_ob.ob_outlet, gensym(xap));
-  if (g > 1)
+  }
+  if (g > 1) {
+	fprintf(stderr,"g > 1");
     outlet_symbol(x->t_ob.ob_outlet, gensym(xip));
+  }
   x->x_jodel = g;
 
   free(xip);
-- 
GitLab