| 281 | } |
| 282 | |
| 283 | static void memPoolFree(const char *filename, int line, |
| 284 | ACL_ALLOCATOR *allocator, ACL_MEM_POOL * pool, void *obj) |
| 285 | { |
| 286 | SQUID_MEM_ALLOCATOR *squid_allocator = |
| 287 | (SQUID_MEM_ALLOCATOR *) allocator; |
| 288 | MemPool *squid_pool = (MemPool *) pool; |
| 289 | |
| 290 | acl_assert(pool && obj); |
| 291 | memMeterDec(squid_pool->meter.inuse); |
| 292 | memMeterDel(squid_allocator->TheMeter.inuse, pool->obj_size); |
| 293 | allocator->mem_pool_free_calls++; |
| 294 | (void) VALGRIND_CHECK_WRITABLE(obj, pool->obj_size); |
| 295 | #if DEBUG_MEMPOOL |
| 296 | { |
| 297 | struct mempool_cookie *cookie = (void *) |
| 298 | (((unsigned char *) obj) + pool->real_obj_size); |
| 299 | (void) VALGRIND_MAKE_READABLE(cookie, sizeof(cookie)); |
| 300 | acl_assert(cookie->cookie == MEMPOOL_COOKIE(obj)); |
| 301 | acl_assert(cookie->pool == pool); |
| 302 | } |
| 303 | #endif |
| 304 | if (squid_allocator->TheMeter.idle.level + pool->obj_size |
| 305 | <= allocator->mem_idle_limit) |
| 306 | { |
| 307 | memMeterInc(squid_pool->meter.idle); |
| 308 | memMeterAdd(squid_allocator->TheMeter.idle, pool->obj_size); |
| 309 | #if DEBUG_MEMPOOL |
| 310 | (void) VALGRIND_MAKE_NOACCESS(obj, pool->real_obj_size |
| 311 | + sizeof(struct mempool_cookie)); |
| 312 | #else |
| 313 | (void) VALGRIND_MAKE_NOACCESS(obj, pool->obj_size); |
| 314 | #endif |
| 315 | if (pool->before_free_fn) |
| 316 | pool->before_free_fn(obj, pool->pool_ctx); |
| 317 | |
| 318 | /* xxx: I should add some here--zsx */ |
| 319 | /* memset(obj, 0, pool->obj_size); */ |
| 320 | acl_stack_append(pool->pstack, obj); |
| 321 | } else { |
| 322 | memMeterDec(squid_pool->meter.alloc); |
| 323 | memMeterDel(squid_allocator->TheMeter.alloc, pool->obj_size); |
| 324 | if (pool->before_free_fn) |
| 325 | pool->before_free_fn(obj, pool->pool_ctx); |
| 326 | acl_default_free(filename, line, obj); |
| 327 | } |
| 328 | acl_assert(squid_pool->meter.idle.level |
| 329 | <= squid_pool->meter.alloc.level); |
| 330 | } |
| 331 | |
| 332 | static int memPoolWasUsed(const ACL_MEM_POOL * pool) |
| 333 | { |
nothing calls this directly
no test coverage detected
searching dependent graphs…