From a8032f58d8a6343c4bf92d3401c25dd9a7fa853d Mon Sep 17 00:00:00 2001 From: julianuziemblo Date: Fri, 22 May 2026 10:42:48 +0200 Subject: [PATCH] stdio/file: fix tmpfile errno setting Fixes: phoenix-rtos/phoenix-rtos-project#1575 Fixes: phoenix-rtos/phoenix-rtos-project#1417 --- stdio/file.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/stdio/file.c b/stdio/file.c index c54d207c..d2080287 100644 --- a/stdio/file.c +++ b/stdio/file.c @@ -1439,15 +1439,20 @@ void funlockfile(FILE *file) FILE *tmpfile(void) { oid_t oid, dev; + int ret; - while (lookup("/dev/posix/tmpfile", &oid, &dev) < 0) { - if (errno != EINTR) { - return NULL; - } + do { + ret = lookup("/dev/posix/tmpfile", &oid, &dev); + } while (ret == -EINTR); + + if (ret < 0) { + errno = abs(ret); + return NULL; } /* Make sure it's a device (created by posixsrv) */ if (oid.port == dev.port) { + errno = ENODEV; return NULL; }