rem: } else { pool_free(idev_pool, 0, FPTR(head)->link_u.idev); FPTR(head)->link_u.idev = NULL; }
add: } else FPTR(cur)->link_u.links = NULL;
context: static void link_idev_data(void){	int head, from, to, start;	alloc_pool_t hlink_pool;	alloc_pool_t idev_pool = the_file_list->hlink_pool;	hlink_pool = pool_create(128 * 1024, sizeof (struct hlink),	    out_of_memory, POOL_INTERN);	for (from = to = 0; from < hlink_count; from++) {		start = from;		head = hlink_list[start];		while (from < hlink_count-1		    && LINKED(hlink_list[from], hlink_list[from+1])) {			pool_free(idev_pool, 0, FPTR(hlink_list[from])->link_u.idev);			FPTR(hlink_list[from])->link_u.links = pool_talloc(hlink_pool,			    struct hlink, 1, "hlink_list");			FPTR(hlink_list[from])->F_HLINDEX = to;			FPTR(hlink_list[from])->F_NEXT = hlink_list[from+1];			from++;		}		if (from > start) {			pool_free(idev_pool, 0, FPTR(hlink_list[from])->link_u.idev);			FPTR(hlink_list[from])->link_u.links = pool_talloc(hlink_pool,			    struct hlink, 1, "hlink_list");			FPTR(head)->flags |= FLAG_HLINK_TOL;			FPTR(hlink_list[from])->F_HLINDEX = to;			FPTR(hlink_list[from])->F_NEXT = head;			FPTR(hlink_list[from])->flags |= FLAG_HLINK_EOL;			hlink_list[to++] = head;		} else {			pool_free(idev_pool, 0, FPTR(head)->link_u.idev);			FPTR(head)->link_u.idev = NULL;		}	}	if (!to) {		free(hlink_list);		hlink_list = NULL;		pool_destroy(hlink_pool);		hlink_pool = NULL;	} else {		hlink_count = to;		hlink_list = realloc_array(hlink_list, int, hlink_count);		if (!hlink_list)			out_of_memory("init_hard_links");	}	the_file_list->hlink_pool = hlink_pool;	pool_destroy(idev_pool);}