From 72c680f005851997bcd542e08d714c5a9e2579d4 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 29 May 2009 18:48:54 +0000 Subject: [PATCH] FSCORE-373 git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13508 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../mod_spidermonkey_teletone.c | 1 + src/switch_ivr_play_say.c | 1 + src/switch_utils.c | 11 +++++++++-- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c b/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c index 9fed5ddf23..e72dc9a15e 100644 --- a/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c +++ b/src/mod/languages/mod_spidermonkey_teletone/mod_spidermonkey_teletone.c @@ -234,6 +234,7 @@ static JSBool teletone_generate(JSContext * cx, JSObject * obj, uintN argc, jsva session = tto->session; write_frame.codec = &tto->codec; write_frame.data = fdata; + write_frame.buflen = sizeof(fdata); channel = switch_core_session_get_channel(session); diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c index b5cbeab140..d0c6b7fd1d 100644 --- a/src/switch_ivr_play_say.c +++ b/src/switch_ivr_play_say.c @@ -731,6 +731,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_gentones(switch_core_session_t *sessi memset(&ts, 0, sizeof(ts)); write_frame.codec = &write_codec; write_frame.data = data; + write_frame.buflen = sizeof(data); switch_buffer_create_dynamic(&audio_buffer, 512, 1024, 0); teletone_init_session(&ts, 0, teletone_handler, audio_buffer); diff --git a/src/switch_utils.c b/src/switch_utils.c index 8636008c49..4d745f3407 100644 --- a/src/switch_utils.c +++ b/src/switch_utils.c @@ -82,12 +82,19 @@ SWITCH_DECLARE(switch_status_t) switch_frame_dup(switch_frame_t *orig, switch_fr { switch_frame_t *new_frame; + if (!orig) { + return SWITCH_STATUS_FALSE; + } + + switch_assert(orig->buflen); + new_frame = malloc(sizeof(*new_frame)); switch_assert(new_frame); *new_frame = *orig; switch_set_flag(new_frame, SFF_DYNAMIC); + new_frame->data = malloc(new_frame->buflen); switch_assert(new_frame->data); @@ -104,8 +111,8 @@ SWITCH_DECLARE(switch_status_t) switch_frame_free(switch_frame_t **frame) if (!frame || !*frame || !switch_test_flag((*frame), SFF_DYNAMIC)) { return SWITCH_STATUS_FALSE; } - - free((*frame)->data); + + switch_safe_free((*frame)->data); free(*frame); *frame = NULL;