diff --git a/deps/uvwasi/include/uvwasi.h b/deps/uvwasi/include/uvwasi.h index 28d38568612607..b45f80b1908ee4 100644 --- a/deps/uvwasi/include/uvwasi.h +++ b/deps/uvwasi/include/uvwasi.h @@ -10,7 +10,7 @@ extern "C" { #define UVWASI_VERSION_MAJOR 0 #define UVWASI_VERSION_MINOR 0 -#define UVWASI_VERSION_PATCH 12 +#define UVWASI_VERSION_PATCH 13 #define UVWASI_VERSION_HEX ((UVWASI_VERSION_MAJOR << 16) | \ (UVWASI_VERSION_MINOR << 8) | \ (UVWASI_VERSION_PATCH)) diff --git a/deps/uvwasi/src/uvwasi.c b/deps/uvwasi/src/uvwasi.c index 25ce4ab846ef86..18885ee25961a6 100644 --- a/deps/uvwasi/src/uvwasi.c +++ b/deps/uvwasi/src/uvwasi.c @@ -1384,8 +1384,14 @@ uvwasi_errno_t uvwasi_fd_readdir(uvwasi_t* uvwasi, } /* Write dirent to the buffer if it will fit. */ - if (UVWASI_SERDES_SIZE_dirent_t + *bufused > buf_len) + if (UVWASI_SERDES_SIZE_dirent_t + *bufused > buf_len) { + /* If there are more entries to be written to the buffer we set + * bufused, which is the return value, to the length of the buffer + * which indicates that there are more entries to be read. + */ + *bufused = buf_len; break; + } uvwasi_serdes_write_dirent_t(buf, *bufused, &dirent); *bufused += UVWASI_SERDES_SIZE_dirent_t;