From bdc30b8d9db6745245331fc5d10bc8456efdcc47 Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Sat, 20 May 2006 01:28:14 +0000 Subject: fix up another place where the code made assumptions about how space for variables would be allocatted on the stack git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@28934 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_sms.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'apps/app_sms.c') diff --git a/apps/app_sms.c b/apps/app_sms.c index c3488b911..105bbe387 100644 --- a/apps/app_sms.c +++ b/apps/app_sms.c @@ -1176,14 +1176,13 @@ static void sms_messagetx(sms_t * h) static int sms_generate (struct ast_channel *chan, void *data, int len, int samples) { struct ast_frame f = { 0 }; - unsigned char waste[AST_FRIENDLY_OFFSET]; #define MAXSAMPLES (800) #ifdef OUTALAW - unsigned char buf[MAXSAMPLES]; + unsigned char *buf; #else - signed short buf[MAXSAMPLES]; + short *buf; #endif -#define SAMPLE2LEN (sizeof (buf[0])) +#define SAMPLE2LEN sizeof(*buf) sms_t *h = data; int i; @@ -1192,9 +1191,9 @@ static int sms_generate (struct ast_channel *chan, void *data, int len, int samp MAXSAMPLES, samples); samples = MAXSAMPLES; } - len = samples * SAMPLE2LEN; + len = samples * SAMPLE2LEN + AST_FRIENDLY_OFFSET; + buf = alloca(len); - waste[0] = 0; /* make compiler happy */ f.frametype = AST_FRAME_VOICE; #ifdef OUTALAW f.subclass = AST_FORMAT_ALAW; @@ -1204,7 +1203,7 @@ static int sms_generate (struct ast_channel *chan, void *data, int len, int samp f.datalen = len; f.offset = AST_FRIENDLY_OFFSET; f.mallocd = 0; - f.data = buf; + f.data = buf + AST_FRIENDLY_OFFSET; f.samples = samples; f.src = "app_sms"; /* create a buffer containing the digital sms pattern */ -- cgit v1.2.3