| 1357 | } |
| 1358 | |
| 1359 | void list_remove(FreeHeader* block) { |
| 1360 | if (block == largest_free_) { |
| 1361 | FreeHeader* smaller = block->smaller_free(pool_ptr_); |
| 1362 | if (smaller) { |
| 1363 | smaller->set_larger_free(NULL, NULL); |
| 1364 | } |
| 1365 | block->set_smaller_free(NULL, NULL); |
| 1366 | } else { |
| 1367 | // Find in list |
| 1368 | for (FreeHeader* free_node = largest_free_; |
| 1369 | free_node; |
| 1370 | free_node = free_node->smaller_free(pool_ptr_)) |
| 1371 | { |
| 1372 | if (free_node == block) { |
| 1373 | FreeHeader* smaller_node = block->smaller_free(pool_ptr_); |
| 1374 | FreeHeader* larger_node = block->larger_free(pool_ptr_); |
| 1375 | |
| 1376 | if (smaller_node) { |
| 1377 | smaller_node->set_larger_free(larger_node, pool_ptr_); |
| 1378 | } |
| 1379 | |
| 1380 | if (larger_node) { |
| 1381 | larger_node->set_smaller_free(smaller_node, pool_ptr_); |
| 1382 | } |
| 1383 | break; |
| 1384 | } |
| 1385 | } |
| 1386 | } |
| 1387 | block->set_smaller_free(NULL, NULL); |
| 1388 | block->set_larger_free(NULL, NULL); |
| 1389 | } |
| 1390 | |
| 1391 | static unsigned char pool_ptr_[1024*1024]; |
| 1392 | unsigned char* next_alloc_; |
nothing calls this directly
no test coverage detected