From 27933e1a79990d018fdb3f95a7fd97b8295ef696 Mon Sep 17 00:00:00 2001 From: Max Wash Date: Sat, 25 Dec 2021 22:04:19 +0000 Subject: [PATCH] Fixed stdio file descriptors not being initialised properly --- photon/libc/include/stdio.h | 4 ++-- photon/libc/sys/horizon/init.c | 6 +++++- photon/libc/sys/horizon/unistd.c | 4 ++++ 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/photon/libc/include/stdio.h b/photon/libc/include/stdio.h index 11191bc..362bd8c 100644 --- a/photon/libc/include/stdio.h +++ b/photon/libc/include/stdio.h @@ -26,8 +26,8 @@ typedef struct __io_file FILE; extern FILE *__get_stdio_file(int); #define stdin (__get_stdio_file(0)) -#define stdout (__get_stdio_file(0)) -#define stderr (__get_stdio_file(0)) +#define stdout (__get_stdio_file(1)) +#define stderr (__get_stdio_file(2)) extern FILE *fopen(const char *path, const char *mode); extern FILE *freopen(const char *path, const char *mode, FILE *fp); diff --git a/photon/libc/sys/horizon/init.c b/photon/libc/sys/horizon/init.c index b0bd32a..99bfeb2 100644 --- a/photon/libc/sys/horizon/init.c +++ b/photon/libc/sys/horizon/init.c @@ -164,6 +164,8 @@ static void init_stdio(mx_bootstrap_handle_t *handles, size_t nhandles) init_stdio_fd(i, fd_handles[i], n); } + + __fio_init(0, 1, 2); } int __crt_init(mx_handle_t bootstrap) @@ -208,10 +210,12 @@ int __crt_init(mx_handle_t bootstrap) #endif init_stdio(start_handles, nr_handles); + int ret = main(msg->args_num, argv); __crt_run_atexit(); - mio_destroy_global_fd_list(); + mio_fd_cleanup(); + mio_fs_cleanup(); mx_task_kill(mx_bootstrap_handle_get(MX_B_TASK_SELF), ret); /* unreachable */ diff --git a/photon/libc/sys/horizon/unistd.c b/photon/libc/sys/horizon/unistd.c index c56830a..96afd1b 100644 --- a/photon/libc/sys/horizon/unistd.c +++ b/photon/libc/sys/horizon/unistd.c @@ -10,6 +10,7 @@ ssize_t read(int fd, void *buf, size_t count) return -1; } + __set_errno(0); return ret; } @@ -21,6 +22,7 @@ ssize_t write(int fd, const void *buf, size_t count) return -1; } + __set_errno(0); return ret; } @@ -32,6 +34,7 @@ int open(const char *pathname, int flags) return -1; } + __set_errno(0); return ret; } @@ -43,5 +46,6 @@ int close(int fd) return -1; } + __set_errno(0); return ret; }