MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / list_remove

Method list_remove

tests/unit-tests/dds/DCPS/MemoryPool.cpp:1359–1389  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

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_;

Callers

nothing calls this directly

Calls 4

smaller_freeMethod · 0.80
set_larger_freeMethod · 0.80
set_smaller_freeMethod · 0.80
larger_freeMethod · 0.80

Tested by

no test coverage detected