}
_public_ int sd_lldp_rx_get_neighbors(sd_lldp_rx *lldp_rx, sd_lldp_neighbor ***ret) {
- sd_lldp_neighbor **l = NULL, *n;
+ _cleanup_free_ sd_lldp_neighbor **l = NULL;
+ sd_lldp_neighbor *n;
int k = 0, r;
assert_return(lldp_rx, -EINVAL);
return -ENOMEM;
r = lldp_rx_start_timer(lldp_rx, NULL);
- if (r < 0) {
- free(l);
+ if (r < 0)
return r;
- }
HASHMAP_FOREACH(n, lldp_rx->neighbor_by_id)
l[k++] = sd_lldp_neighbor_ref(n);
/* Return things in a stable order */
typesafe_qsort(l, k, neighbor_compare_func);
- *ret = l;
+ *ret = TAKE_PTR(l);
return k;
}