From 2fa2fdd8b8b8e39150011ef3e3caa1f580a5d554 Mon Sep 17 00:00:00 2001
From: Jakob Olsson <jakobols@kth.se>
Date: Wed, 30 May 2018 09:02:17 +0200
Subject: [PATCH] add clear_list function

---
 dfs.c                   | 11 +++++++++++
 dfs.h                   |  3 ++-
 dongle_infrastructure.c |  1 +
 3 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/dfs.c b/dfs.c
index caca347..6b97798 100644
--- a/dfs.c
+++ b/dfs.c
@@ -49,4 +49,15 @@ bool is_visited(char *path, struct list_head *visited)
 	}
 
 	return false;
+}
+
+void clear_list(struct list_head *visited)
+{
+	struct node *n, *tmp;
+
+	list_for_each_entry_safe(n, tmp, visited, list) {
+		free(n->path);
+		list_del(n->list);
+		free(n);
+	}
 }
\ No newline at end of file
diff --git a/dfs.h b/dfs.h
index 4666f5e..ced3113 100644
--- a/dfs.h
+++ b/dfs.h
@@ -11,5 +11,6 @@ struct node {
 void enqueue_stack(struct node *n, struct list_head *stack);
 struct node *dequeue_stack(struct list_head *stack);
 void add_visited(struct node *n, struct list_head *visited);
-bool is_visited(struct node *n, struct list_head *visited);
+bool is_visited(char *path, struct list_head *visited);
+void clear_list(struct list_head *visited);
 #endif
\ No newline at end of file
diff --git a/dongle_infrastructure.c b/dongle_infrastructure.c
index e2eb86b..3f50e58 100644
--- a/dongle_infrastructure.c
+++ b/dongle_infrastructure.c
@@ -289,6 +289,7 @@ char *dfs_get_path_name(char *folder_name)
 		}
 		closedir(dr);
 	}
+	clear_list(&visited);
 fail_opendir:
 	return NULL;
 success:
-- 
GitLab