summaryrefslogtreecommitdiff
path: root/libc/stdio/stdio_ext.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libc/stdio/stdio_ext.cpp')
-rw-r--r--libc/stdio/stdio_ext.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/libc/stdio/stdio_ext.cpp b/libc/stdio/stdio_ext.cpp
index f273d45fe..88e59510d 100644
--- a/libc/stdio/stdio_ext.cpp
+++ b/libc/stdio/stdio_ext.cpp
@@ -27,6 +27,8 @@
*/
#include <stdio_ext.h>
+
+#include <errno.h>
#include <stdlib.h>
#include "local.h"
@@ -101,5 +103,10 @@ int ferror_unlocked(FILE* fp) {
}
int fileno_unlocked(FILE* fp) {
- return __sfileno(fp);
+ int fd = fp->_file;
+ if (fd == -1) {
+ errno = EBADF;
+ return -1;
+ }
+ return fd;
}