diff --git a/NEWS b/NEWS
index 68d700bac..d10ac66e7 100644
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ ver 0.15.2 (2009/??/??)
   - flac: don't allocate cuesheet twice (memleak)
 * update: free empty path string (memleak)
 * update: free temporary string in container scan (memleak)
+* directory: free empty directories after removing them (memleak)
 
 
 ver 0.15.1 (2009/07/15)
diff --git a/src/directory.c b/src/directory.c
index 85c24fd04..ef8c038a3 100644
--- a/src/directory.c
+++ b/src/directory.c
@@ -73,9 +73,14 @@ directory_prune_empty(struct directory *directory)
 	struct dirvec *dv = &directory->children;
 
 	for (i = dv->nr; --i >= 0; ) {
-		directory_prune_empty(dv->base[i]);
-		if (directory_is_empty(dv->base[i]))
-			dirvec_delete(dv, dv->base[i]);
+		struct directory *child = dv->base[i];
+
+		directory_prune_empty(child);
+
+		if (directory_is_empty(child)) {
+			dirvec_delete(dv, child);
+			directory_free(child);
+		}
 	}
 	if (!dv->nr)
 		dirvec_destroy(dv);