diff --git a/kernel/src/Api/BuildNo.hpp b/kernel/src/Api/BuildNo.hpp index 8d0afdc..4a8b1ef 100644 --- a/kernel/src/Api/BuildNo.hpp +++ b/kernel/src/Api/BuildNo.hpp @@ -12,4 +12,4 @@ #pragma once -#define MONTAUK_BUILD_NUMBER 19 +#define MONTAUK_BUILD_NUMBER 20 diff --git a/kernel/src/Fs/Ramdisk.cpp b/kernel/src/Fs/Ramdisk.cpp index 2af8b67..2b15fd0 100644 --- a/kernel/src/Fs/Ramdisk.cpp +++ b/kernel/src/Fs/Ramdisk.cpp @@ -280,6 +280,14 @@ namespace Fs::Ramdisk { outNames[count++] = entryName; } + // A path with no directory entry and no children does not exist. + // Without this, ReadDir on a nonexistent path returned 0 (empty), + // which userspace stat()/access() misread as "directory exists" - + // fatal for GCC's driver, which access()-tests optional spec files. + if (count == 0 && seen == 0 && pathLen > 0 && selfIdx < 0) { + return -1; + } + return count; }