diff --git a/src/util.c b/src/util.c
index 8efcabed73af77a99e5181d326442ef8d57150d4..d6002fa3e6fe30f9804281d97bd81e10f28388da 100644
--- a/src/util.c
+++ b/src/util.c
@@ -176,8 +176,8 @@ void freedir_rec(struct dir *dr) {
 }
 
 
-struct dir *freedir(struct dir *dr) {
-  struct dir *tmp, *cur;
+void freedir(struct dir *dr) {
+  struct dir *tmp;
 
   /* update sizes of parent directories */
   tmp = dr;
@@ -187,33 +187,24 @@ struct dir *freedir(struct dir *dr) {
     tmp->items -= dr->items+1;
   }
 
-  /* free dr->sub recursive */
-  if(dr->sub) freedir_rec(dr->sub);
+  /* free dr->sub recursively */
+  if(dr->sub)
+    freedir_rec(dr->sub);
  
   /* update references */
-  cur = NULL;
   if(dr->parent) {
     /* item is at the top of the dir, refer to next item */
-    if(dr->parent->sub == dr) {
+    if(dr->parent->sub == dr)
       dr->parent->sub = dr->next;
-      cur = dr->next;
-    }
     /* else, get the previous item and update it's "next"-reference */
     else
       for(tmp = dr->parent->sub; tmp != NULL; tmp = tmp->next)
-        if(tmp->next == dr) {
+        if(tmp->next == dr)
           tmp->next = dr->next;
-          cur = tmp;
-        }
-    /* no previous item, refer to parent dir */
-    if(cur == NULL && dr->parent->parent)
-      cur = dr->parent;
   }
 
   free(dr->name);
   free(dr);
-
-  return cur;
 }
 
 
diff --git a/src/util.h b/src/util.h
index fa4828964ff58a51b3f49e17a292edc104c3c3ab..72f303882ae9ae4aac39ad99612736ea35bc3dcc 100644
--- a/src/util.h
+++ b/src/util.h
@@ -72,7 +72,7 @@ char *formatsize(const off_t);
 char *fullsize(const off_t);
 
 /* recursively free()s a directory tree */
-struct dir *freedir(struct dir *);
+void freedir(struct dir *);
 
 /* generates full path from a dir item */
 char *getpath(struct dir *, char *);