diff --git a/ChangeLog b/ChangeLog
index ccbb3c83fe231eeb146e0a588ba95a6b01949bac..bc7a44e201c15270f770fcd512540c960d1f0e93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@ git - ?
   - Properly select the next item after deletion
 	- Removed reliance of dirfd()
 	- Fixed non-void return in void delete_process()
+	- Fixed several tiny memory leaks
 
 1.5 - 2009-05-02
 	- Fixed incorrect apparent size on directory refresh
diff --git a/src/calc.c b/src/calc.c
index 23f142a55591e24e4b4d8c477030dd35c01850ef..cceb9a9e6415efb26af924dc0fcb79a364de5d26 100644
--- a/src/calc.c
+++ b/src/calc.c
@@ -177,6 +177,8 @@ int calc_dir(struct dir *dest, char *name) {
     while((t = t->parent) != NULL)
       t->flags |= FF_SERR;
     calc_leavepath();
+    if(dir != NULL)
+      closedir(dir);
     return 0;
   }
 
@@ -187,6 +189,7 @@ int calc_dir(struct dir *dest, char *name) {
       dest->flags |= FF_ERR;
     if(input_handle(1)) {
       calc_leavepath();
+      closedir(dir);
       return 1;
     }
     calc_leavepath();