summaryrefslogtreecommitdiff
path: root/pjmedia
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2012-06-07 04:10:22 +0000
committerNanang Izzuddin <nanang@teluu.com>2012-06-07 04:10:22 +0000
commit394701459d2bb65c4cdedb75b0c3cc1ac226c019 (patch)
tree16ab893923403355de0f938046fb228d67924d4f /pjmedia
parent02716b535c1eb8d3e0df5406209d1558c3257465 (diff)
Fix #1531: fixed memory and handle leak issue in clock thread.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4160 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia')
-rw-r--r--pjmedia/src/pjmedia/clock_thread.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/pjmedia/src/pjmedia/clock_thread.c b/pjmedia/src/pjmedia/clock_thread.c
index b4ed2363..3423bf21 100644
--- a/pjmedia/src/pjmedia/clock_thread.c
+++ b/pjmedia/src/pjmedia/clock_thread.c
@@ -165,11 +165,9 @@ PJ_DEF(pj_status_t) pjmedia_clock_create2(pj_pool_t *pool,
PJ_ASSERT_RETURN(pool && param->usec_interval && param->clock_rate &&
p_clock, PJ_EINVAL);
- pool = pj_pool_create(pool->factory, "clock%p", 512, 512, NULL);
-
clock = PJ_POOL_ALLOC_T(pool, pjmedia_clock);
- clock->pool = pool;
-
+ clock->pool = pj_pool_create(pool->factory, "clock%p", 512, 512, NULL);
+
status = pj_get_timestamp_freq(&clock->freq);
if (status != PJ_SUCCESS)
return status;
@@ -225,7 +223,7 @@ PJ_DEF(pj_status_t) pjmedia_clock_start(pjmedia_clock *clock)
status = pj_thread_create(clock->pool, "clock", &clock_thread, clock,
0, 0, &clock->thread);
if (status != PJ_SUCCESS) {
- pj_lock_destroy(clock->lock);
+ clock->running = PJ_FALSE;
return status;
}
}
@@ -246,7 +244,9 @@ PJ_DEF(pj_status_t) pjmedia_clock_stop(pjmedia_clock *clock)
if (clock->thread) {
if (pj_thread_join(clock->thread) == PJ_SUCCESS) {
+ pj_thread_destroy(clock->thread);
clock->thread = NULL;
+ pj_pool_reset(clock->pool);
} else {
clock->quitting = PJ_FALSE;
}