summaryrefslogtreecommitdiff
path: root/networking/ifupdown.c
diff options
context:
space:
mode:
Diffstat (limited to 'networking/ifupdown.c')
-rw-r--r--networking/ifupdown.c15
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);
}
}
}