summaryrefslogtreecommitdiff
path: root/pjlib
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-01-02 08:21:43 +0000
committerBenny Prijono <bennylp@teluu.com>2008-01-02 08:21:43 +0000
commitaa585b3dbe9af66cc5868dba31b3dac18de08f6d (patch)
treed59c91366c095cff270425cf9f0a0727fd0a9922 /pjlib
parent4bc162108804af420d576b9872f9d951728aa35c (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.cpp14
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.
*/