From 59e8656698ec148fa5ddfeeb68cbea2309374eae Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Wed, 12 Dec 2007 14:16:24 +0000 Subject: [PATCH] add missing code to free pools in certian conditions that were overlooked git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6699 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch_core_asr.c | 10 +++++++++- src/switch_core_directory.c | 10 +++++++++- src/switch_core_file.c | 9 ++++++++- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/switch_core_asr.c b/src/switch_core_asr.c index 71fdd2f4cb..2498091fde 100644 --- a/src/switch_core_asr.c +++ b/src/switch_core_asr.c @@ -125,9 +125,17 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_resume(switch_asr_handle_t *ah) SWITCH_DECLARE(switch_status_t) switch_core_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags) { + switch_status_t status; + switch_assert(ah != NULL); - return ah->asr_interface->asr_close(ah, flags); + status = ah->asr_interface->asr_close(ah, flags); + + if (switch_test_flag(ah, SWITCH_ASR_FLAG_FREE_POOL)) { + switch_core_destroy_memory_pool(&ah->memory_pool); + } + + return status; } SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags) diff --git a/src/switch_core_directory.c b/src/switch_core_directory.c index 362f78ae05..8ee3d75ee9 100644 --- a/src/switch_core_directory.c +++ b/src/switch_core_directory.c @@ -73,6 +73,14 @@ SWITCH_DECLARE(switch_status_t) switch_core_directory_next_pair(switch_directory SWITCH_DECLARE(switch_status_t) switch_core_directory_close(switch_directory_handle_t *dh) { - return dh->directory_interface->directory_close(dh); + switch_status_t status; + + status = dh->directory_interface->directory_close(dh); + + if (switch_test_flag(dh, SWITCH_DIRECTORY_FLAG_FREE_POOL)) { + switch_core_destroy_memory_pool(&dh->memory_pool); + } + + return status; } diff --git a/src/switch_core_file.c b/src/switch_core_file.c index 2038fd33a6..b8242757a1 100644 --- a/src/switch_core_file.c +++ b/src/switch_core_file.c @@ -143,10 +143,17 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_get_string(switch_file_handle_t SWITCH_DECLARE(switch_status_t) switch_core_file_close(switch_file_handle_t *fh) { + switch_status_t status; + switch_assert(fh != NULL); switch_assert(fh->file_interface != NULL); switch_clear_flag(fh, SWITCH_FILE_OPEN); - return fh->file_interface->file_close(fh); + status = fh->file_interface->file_close(fh); + if (switch_test_flag(fh, SWITCH_FILE_FLAG_FREE_POOL)) { + switch_core_destroy_memory_pool(&fh->memory_pool); + } + + return status; }