diff --git a/src/delete.c b/src/delete.c
index ee95e54c096c06d89c153793c3934bce040596c9..6ffe922c32d4addb50a27347c77ac1b68e3fc0b4 100644
--- a/src/delete.c
+++ b/src/delete.c
@@ -194,12 +194,14 @@ delete_nxt:
   if(r == -1 && !ignoreerr) {
     state = DS_FAILED;
     lasterrno = errno;
+    curdir = dr;
     while(state == DS_FAILED)
       if(input_handle(0))
         return 1;
-  }
-
-  freedir(dr);
+  } else
+    freedir(dr);
+  if(r == -1 && root == dr)
+    return 1;
   return 0;
 }