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,