| 528 | } |
| 529 | |
| 530 | static struct residual_network * |
| 531 | alloc_residual_network(const tal_t *ctx, const size_t max_num_nodes, |
| 532 | const size_t max_num_arcs) |
| 533 | { |
| 534 | struct residual_network *residual_network = |
| 535 | tal(ctx, struct residual_network); |
| 536 | if (!residual_network) |
| 537 | goto function_fail; |
| 538 | |
| 539 | residual_network->cap = tal_arrz(residual_network, s64, max_num_arcs); |
| 540 | residual_network->cost = tal_arrz(residual_network, s64, max_num_arcs); |
| 541 | residual_network->potential = |
| 542 | tal_arrz(residual_network, s64, max_num_nodes); |
| 543 | |
| 544 | if (!residual_network->cap || !residual_network->cost || |
| 545 | !residual_network->potential) { |
| 546 | goto function_fail; |
| 547 | } |
| 548 | return residual_network; |
| 549 | |
| 550 | function_fail: |
| 551 | return tal_free(residual_network); |
| 552 | } |
| 553 | |
| 554 | static void init_residual_network( |
| 555 | const struct linear_network * linear_network, |