1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
diff --git a/apps/buffering.c b/apps/buffering.c
index 9deced4..ada6205 100644
--- a/apps/buffering.c
+++ b/apps/buffering.c
@@ -606,7 +606,8 @@ static bool buffer_handle(int handle_id)

         if (h->fd < 0)
         {
-            /* could not open the file, truncate it where it is */
+            /* could not open the file (deleted or moved by the user),
+             * truncate it where it is */
             h->filesize -= h->filerem;
             h->filerem = 0;
             return true;
@@ -642,7 +643,11 @@ static bool buffer_handle(int handle_id)

         /* stop copying if it would overwrite the reading position */
         if (RINGBUF_ADD_CROSS(h->widx, copy_n, buf_ridx) >= 0)
+        {
+            close(h->fd);
+            h->fd = -1;
             return false;
+        }

         /* This would read into the next handle, this is broken
         if (h->next && RINGBUF_ADD_CROSS(h->widx, copy_n,