summaryrefslogtreecommitdiff
path: root/pjlib/src/pj/pool_policy_new.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pjlib/src/pj/pool_policy_new.cpp')
-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.
*/