diff options
Diffstat (limited to 'networking/ifupdown.c')
-rw-r--r-- | networking/ifupdown.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/networking/ifupdown.c b/networking/ifupdown.c index 699fa7d..156ceb7 100644 --- a/networking/ifupdown.c +++ b/networking/ifupdown.c @@ -1356,16 +1356,15 @@ extern int ifupdown_main(int argc, char **argv) } else { /* Remove an interface from the linked list */ if (iface_state) { - /* This needs to be done better */ + const llist_t *link = iface_state->link; free(iface_state->data); - free(iface_state->link); - if (iface_state->link) { - iface_state->data = iface_state->link->data; - iface_state->link = iface_state->link->link; - } else { - iface_state->data = NULL; - iface_state->link = NULL; + iface_state->data = NULL; + iface_state->link = NULL; + if (link) { + iface_state->data = link->data; + iface_state->link = link->link; } + free(link); } } } |