diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index d07cab79f4..3eb0a65c9a 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -2246,7 +2246,7 @@ static switch_status_t conference_member_say(conference_member_t * member, char if (!member->sh) { memset(&member->lsh, 0, sizeof(member->lsh)); if (switch_core_speech_open(&member->lsh, conference->tts_engine, conference->tts_voice, - conference->rate, conference->interval, &flags, fnode->pool) != + conference->rate, conference->interval, &flags, switch_core_session_get_pool(member->session)) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid TTS module [%s]!\n", conference->tts_engine); return SWITCH_STATUS_FALSE; diff --git a/src/switch_buffer.c b/src/switch_buffer.c index e928a0489d..3e26f2cc4a 100644 --- a/src/switch_buffer.c +++ b/src/switch_buffer.c @@ -266,12 +266,13 @@ SWITCH_DECLARE(void) switch_buffer_zero(switch_buffer_t *buffer) SWITCH_DECLARE(void) switch_buffer_destroy(switch_buffer_t **buffer) { - if (*buffer && switch_test_flag((*buffer), SWITCH_BUFFER_FLAG_DYNAMIC)) { - free((*buffer)->data); - free(*buffer); + if (buffer && *buffer) { + if ((switch_test_flag((*buffer), SWITCH_BUFFER_FLAG_DYNAMIC))) { + switch_safe_free((*buffer)->data); + free(*buffer); + } + *buffer = NULL; } - - *buffer = NULL; } /* For Emacs: diff --git a/src/switch_core_speech.c b/src/switch_core_speech.c index 2fd092aae7..0ce01f4cfe 100644 --- a/src/switch_core_speech.c +++ b/src/switch_core_speech.c @@ -122,5 +122,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_speech_read_tts(switch_speech_handle SWITCH_DECLARE(switch_status_t) switch_core_speech_close(switch_speech_handle_t *sh, switch_speech_flag_t *flags) { - return sh->speech_interface->speech_close(sh, flags); + switch_status_t status = sh->speech_interface->speech_close(sh, flags); + + if (switch_test_flag(sh, SWITCH_SPEECH_FLAG_FREE_POOL)) { + switch_core_destroy_memory_pool(&sh->memory_pool); + } + + return status; }