diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-01-02 08:21:43 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-01-02 08:21:43 +0000 |
commit | aa585b3dbe9af66cc5868dba31b3dac18de08f6d (patch) | |
tree | d59c91366c095cff270425cf9f0a0727fd0a9922 /pjlib | |
parent | 4bc162108804af420d576b9872f9d951728aa35c (diff) |
Defect: new allocator didn't call factory on_block_alloc()/on_block_free()
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1652 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjlib')
-rw-r--r-- | pjlib/src/pj/pool_policy_new.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pjlib/src/pj/pool_policy_new.cpp b/pjlib/src/pj/pool_policy_new.cpp index 42771660..651d401c 100644 --- a/pjlib/src/pj/pool_policy_new.cpp +++ b/pjlib/src/pj/pool_policy_new.cpp @@ -33,9 +33,14 @@ static void *operator_new(pj_pool_factory *factory, pj_size_t size) void *mem; PJ_CHECK_STACK(); - PJ_UNUSED_ARG(factory); - PJ_UNUSED_ARG(size); + if (factory->on_block_alloc) { + int rc; + rc = factory->on_block_alloc(factory, size); + if (!rc) + return NULL; + } + mem = (void*) new char[size+(SIG_SIZE << 1)]; /* Exception for new operator may be disabled, so.. */ @@ -52,9 +57,10 @@ static void *operator_new(pj_pool_factory *factory, pj_size_t size) static void operator_delete(pj_pool_factory *factory, void *mem, pj_size_t size) { PJ_CHECK_STACK(); - PJ_UNUSED_ARG(factory); - PJ_UNUSED_ARG(size); + if (factory->on_block_free) + factory->on_block_free(factory, size); + /* Check and remove signature when PJ_SAFE_POOL is set. It will * move "mem" pointer backward. */ |