| 1313 | } |
| 1314 | |
| 1315 | void *acl_slice_pool_alloc(const char *filename, int line, |
| 1316 | ACL_SLICE_POOL *asp, size_t size) |
| 1317 | { |
| 1318 | char *ptr; |
| 1319 | int n; |
| 1320 | |
| 1321 | size += sizeof(size_t); /* ͷ�������ռ���Ϊ��־λ */ |
| 1322 | if (asp == NULL || (int) size >= asp->base * asp->nslice) { |
| 1323 | size += sizeof(size_t); |
| 1324 | ptr = (char*) __slice_malloc_fn(filename, line, size); |
| 1325 | if (ptr) { |
| 1326 | *((size_t*) ptr) = size - sizeof(size_t) * 2; |
| 1327 | *(((size_t*) ptr) + 1) = 0; |
| 1328 | ptr += sizeof(size_t) * 2; |
| 1329 | } |
| 1330 | return ptr; |
| 1331 | } |
| 1332 | n = (int) size / asp->base; |
| 1333 | if (size % asp->base != 0) { |
| 1334 | n++; |
| 1335 | } |
| 1336 | |
| 1337 | ptr = (char*) acl_slice_alloc(asp->slices[n - 1]); |
| 1338 | if (ptr) { |
| 1339 | *((size_t*) ptr) = size - sizeof(size_t); |
| 1340 | ptr += sizeof(size_t); |
| 1341 | } |
| 1342 | return ptr; |
| 1343 | } |
| 1344 | |
| 1345 | void *acl_slice_pool_calloc(const char *filename, int line, |
| 1346 | ACL_SLICE_POOL *asp, size_t nmemb, size_t size) |
no test coverage detected
searching dependent graphs…