diff --git a/components/vfs/test_apps/main/test_vfs_select.c b/components/vfs/test_apps/main/test_vfs_select.c index 761ddeeb4db..e54d91547b5 100644 --- a/components/vfs/test_apps/main/test_vfs_select.c +++ b/components/vfs/test_apps/main/test_vfs_select.c @@ -60,7 +60,6 @@ static int dummy_close(int fd) static esp_err_t dummy_start_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, esp_vfs_select_sem_t sem, void **end_select_args) { (void) nfds; - (void) exceptfds; dummy_select_args_t *args = calloc(1, sizeof(dummy_select_args_t)); if (args == NULL) { @@ -72,6 +71,18 @@ static esp_err_t dummy_start_select(int nfds, fd_set *readfds, fd_set *writefds, args->ready_read = readfds && FD_ISSET(args->local_fd, readfds); args->ready_write = writefds && FD_ISSET(args->local_fd, writefds); + // start_select receives requested events; clear all output sets and let + // end_select publish only actual readiness. + if (readfds) { + FD_ZERO(readfds); + } + if (writefds) { + FD_ZERO(writefds); + } + if (exceptfds) { + FD_ZERO(exceptfds); + } + if (!(args->ready_read || args->ready_write)) { free(args); *end_select_args = NULL;