I'm not sure about that test. POSIX.1 does not require that readdir return EBADF, it's an "if detected" error. No valid POSIX.1 program can pass a bad argument to readdir. For any case but null, such as after you've called closedir, it's as liable to crash as to notice it.