- head = hlink_list[start];
- while (from < hlink_count-1
- && LINKED(hlink_list[from], hlink_list[from+1])) {
- hlink_list[from]->F_HLINDEX = to;
- hlink_list[from]->F_NEXT = hlink_list[from+1];
- from++;
+ while (1) {
+ cur = hlink_list[from];
+ if (from == hlink_count-1
+ || !LINKED(cur, hlink_list[from+1]))
+ break;
+ pool_free(idev_pool, 0, FPTR(cur)->link_u.idev);
+ FPTR(cur)->link_u.links = pool_talloc(hlink_pool,
+ struct hlink, 1, "hlink_list");
+
+ FPTR(cur)->F_HLINDEX = to;
+ FPTR(cur)->F_NEXT = hlink_list[++from];