aboutsummaryrefslogtreecommitdiffstats
path: root/src/dumm/dumm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dumm/dumm.c')
-rw-r--r--src/dumm/dumm.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/dumm/dumm.c b/src/dumm/dumm.c
index 5db8eaee0..0bb74e886 100644
--- a/src/dumm/dumm.c
+++ b/src/dumm/dumm.c
@@ -49,8 +49,6 @@ struct private_dumm_t {
linked_list_t *guests;
/** list of managed bridges */
linked_list_t *bridges;
- /** do not catch signals if we are destroying */
- bool destroying;
};
/**
@@ -219,8 +217,11 @@ static void destroy(private_dumm_t *this)
}
enumerator->destroy(enumerator);
- this->destroying = TRUE;
- this->guests->destroy_offset(this->guests, offsetof(guest_t, destroy));
+ while (this->guests->remove_last(this->guests, (void**)&guest) == SUCCESS)
+ {
+ guest->destroy(guest);
+ }
+ this->guests->destroy(this->guests);
free(this->guest_dir);
free(this->template_dir);
free(this->template);
@@ -279,8 +280,6 @@ dumm_t *dumm_create(char *dir)
this->public.load_template = (bool(*)(dumm_t*, char *name))load_template;
this->public.destroy = (void(*)(dumm_t*))destroy;
- this->destroying = FALSE;
-
if (dir && *dir == '/')
{
this->dir = strdup(dir);