diff --git a/sys/fs/vfs/file.c b/sys/fs/vfs/file.c index 0abe209..859f4e0 100644 --- a/sys/fs/vfs/file.c +++ b/sys/fs/vfs/file.c @@ -544,7 +544,7 @@ if (fd->dup > 0) fd->dup--; else { - + fd->dup = -2; if (fd->res != 0x0) fl_fclose(fd->res); diff --git a/sys/kernel/vfs_calls.c b/sys/kernel/vfs_calls.c index 48290f0..189e9d9 100644 --- a/sys/kernel/vfs_calls.c +++ b/sys/kernel/vfs_calls.c @@ -136,7 +136,7 @@ if (!fclose(fd->fd)) td->td_retval[0] = -1; - if (fd->fd->dup > 0) + if (fd->fd->dup > 0 || fd->fd->dup == -2) td->td_retval[0] = 0; else { kprintf("DESTROY: !!!!!!!!!!!!!!!!!!!!!!!!!!!!", args->fd);