@@ -392,7 +392,7 @@ static s64 get_arc_flow(
392392static u32 arc_tail (const struct linear_network * linear_network ,
393393 const struct arc arc )
394394{
395- assert (arc .idx < tal_count ( linear_network -> arc_tail_node ) );
395+ assert (arc .idx < linear_network -> max_num_arcs );
396396 return linear_network -> arc_tail_node [ arc .idx ];
397397}
398398/* Helper function.
@@ -401,7 +401,7 @@ static u32 arc_head(const struct linear_network *linear_network,
401401 const struct arc arc )
402402{
403403 const struct arc dual = arc_dual (arc );
404- assert (dual .idx < tal_count ( linear_network -> arc_tail_node ) );
404+ assert (dual .idx < linear_network -> max_num_arcs );
405405 return linear_network -> arc_tail_node [dual .idx ];
406406}
407407
@@ -412,7 +412,7 @@ static struct arc node_adjacency_begin(
412412 const struct linear_network * linear_network ,
413413 const u32 node )
414414{
415- assert (node < tal_count ( linear_network -> node_adjacency_first_arc ) );
415+ assert (node < linear_network -> max_num_arcs );
416416 return linear_network -> node_adjacency_first_arc [node ];
417417}
418418
@@ -429,7 +429,7 @@ static struct arc node_adjacency_next(
429429 const struct linear_network * linear_network ,
430430 const struct arc arc )
431431{
432- assert (arc .idx < tal_count ( linear_network -> node_adjacency_next_arc ) );
432+ assert (arc .idx < linear_network -> max_num_arcs );
433433 return linear_network -> node_adjacency_next_arc [arc .idx ];
434434}
435435
@@ -540,16 +540,13 @@ static void linear_network_add_adjacenct_arc(
540540 const u32 node_idx ,
541541 const struct arc arc )
542542{
543- assert (arc .idx < tal_count ( linear_network -> arc_tail_node ) );
543+ assert (arc .idx < linear_network -> max_num_arcs );
544544 linear_network -> arc_tail_node [arc .idx ] = node_idx ;
545545
546- assert (node_idx < tal_count ( linear_network -> node_adjacency_first_arc ) );
546+ assert (node_idx < linear_network -> max_num_arcs );
547547 const struct arc first_arc = linear_network -> node_adjacency_first_arc [node_idx ];
548548
549- assert (arc .idx < tal_count (linear_network -> node_adjacency_next_arc ));
550549 linear_network -> node_adjacency_next_arc [arc .idx ]= first_arc ;
551-
552- assert (node_idx < tal_count (linear_network -> node_adjacency_first_arc ));
553550 linear_network -> node_adjacency_first_arc [node_idx ]= arc ;
554551}
555552
@@ -596,23 +593,23 @@ init_linear_network(const tal_t *ctx, const struct pay_parameters *params)
596593 linear_network -> max_num_nodes = max_num_nodes ;
597594
598595 linear_network -> arc_tail_node = tal_arr (linear_network ,u32 ,max_num_arcs );
599- for (size_t i = 0 ;i < tal_count ( linear_network -> arc_tail_node ) ;++ i )
596+ for (size_t i = 0 ;i < max_num_arcs ;++ i )
600597 linear_network -> arc_tail_node [i ]= INVALID_INDEX ;
601598
602599 linear_network -> node_adjacency_next_arc = tal_arr (linear_network ,struct arc ,max_num_arcs );
603- for (size_t i = 0 ;i < tal_count ( linear_network -> node_adjacency_next_arc ) ;++ i )
600+ for (size_t i = 0 ;i < max_num_arcs ;++ i )
604601 linear_network -> node_adjacency_next_arc [i ].idx = INVALID_INDEX ;
605602
606603 linear_network -> node_adjacency_first_arc = tal_arr (linear_network ,struct arc ,max_num_nodes );
607- for (size_t i = 0 ;i < tal_count ( linear_network -> node_adjacency_first_arc ) ;++ i )
604+ for (size_t i = 0 ;i < max_num_nodes ;++ i )
608605 linear_network -> node_adjacency_first_arc [i ].idx = INVALID_INDEX ;
609606
610607 linear_network -> arc_prob_cost = tal_arr (linear_network ,s64 ,max_num_arcs );
611- for (size_t i = 0 ;i < tal_count ( linear_network -> arc_prob_cost ) ;++ i )
608+ for (size_t i = 0 ;i < max_num_arcs ;++ i )
612609 linear_network -> arc_prob_cost [i ]= INFINITE ;
613610
614611 linear_network -> arc_fee_cost = tal_arr (linear_network ,s64 ,max_num_arcs );
615- for (size_t i = 0 ;i < tal_count ( linear_network -> arc_fee_cost ) ;++ i )
612+ for (size_t i = 0 ;i < max_num_arcs ;++ i )
616613 linear_network -> arc_fee_cost [i ]= INFINITE ;
617614
618615 linear_network -> capacity = tal_arrz (linear_network ,s64 ,max_num_arcs );
@@ -699,9 +696,9 @@ find_admissible_path(const struct linear_network *linear_network,
699696 bool target_found = false;
700697 /* Simple linear queue of node indexes */
701698 u32 * queue = tal_arr (tmpctx , u32 , linear_network -> max_num_arcs );
702- size_t qstart , qend ;
699+ size_t qstart , qend , prev_len = tal_count ( prev ) ;
703700
704- for (size_t i = 0 ;i < tal_count ( prev ) ;++ i )
701+ for (size_t i = 0 ;i < prev_len ;++ i )
705702 prev [i ].idx = INVALID_INDEX ;
706703
707704 // The graph is dense, and the farthest node is just a few hops away,
@@ -729,7 +726,7 @@ find_admissible_path(const struct linear_network *linear_network,
729726
730727 u32 next = arc_head (linear_network ,arc );
731728
732- assert (next < tal_count ( prev ) );
729+ assert (next < prev_len );
733730
734731 // if that node has been seen previously
735732 if (prev [next ].idx != INVALID_INDEX )
0 commit comments