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,