diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2012-11-22 05:00:01 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2012-11-22 05:00:01 +0000 |
commit | aa8a3b9e20ce37f09abfe1336b335a5f93d713c2 (patch) | |
tree | e47edabd8ea97aabfb994172c0cead2be296803d /pjlib/src/pj/pool_caching.c | |
parent | 59950a526565b533cd1bd7e7216843f3cb2cc483 (diff) |
Fix #1593: avoid wrap around in caching pool capacity value.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4298 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib/src/pj/pool_caching.c')
-rw-r--r-- | pjlib/src/pj/pool_caching.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/pjlib/src/pj/pool_caching.c b/pjlib/src/pj/pool_caching.c index 1e753025..763e9b04 100644 --- a/pjlib/src/pj/pool_caching.c +++ b/pjlib/src/pj/pool_caching.c @@ -178,7 +178,11 @@ static pj_pool_t* cpool_create_pool(pj_pool_factory *pf, pj_pool_init_int(pool, name, increment_sz, callback); /* Update pool manager's free capacity. */ - cp->capacity -= pj_pool_get_capacity(pool); + if (cp->capacity > pj_pool_get_capacity(pool)) { + cp->capacity -= pj_pool_get_capacity(pool); + } else { + cp->capacity = 0; + } PJ_LOG(6, (pool->obj_name, "pool reused, size=%u", pool->capacity)); } @@ -199,7 +203,7 @@ static pj_pool_t* cpool_create_pool(pj_pool_factory *pf, static void cpool_release_pool( pj_pool_factory *pf, pj_pool_t *pool) { pj_caching_pool *cp = (pj_caching_pool*)pf; - unsigned pool_capacity; + pj_size_t pool_capacity; unsigned i; PJ_CHECK_STACK(); |