projects
/
systemd
/
.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
af98104
)
fd-util: be more careful with fclose() errnos
author
Lennart Poettering
<lennart@poettering.net>
Tue, 2 Jun 2020 08:39:25 +0000
(10:39 +0200)
committer
Zbigniew Jędrzejewski-Szmek
<zbyszek@in.waw.pl>
Mon, 27 Jul 2020 08:26:32 +0000
(10:26 +0200)
This might fix #15859, a bug which I find very puzzling.
(cherry picked from commit
75f6d5d87e950f62baced48fe9b58828969e3811
)
src/basic/fd-util.c
patch
|
blob
|
history
diff --git
a/src/basic/fd-util.c
b/src/basic/fd-util.c
index 4be876e24c8bd7452bba4cdacc1161d15ff26dca..de3f238d33556948dbf3bd4f6bb94c136e12a2d7 100644
(file)
--- a/
src/basic/fd-util.c
+++ b/
src/basic/fd-util.c
@@
-102,13
+102,16
@@
int fclose_nointr(FILE *f) {
/* Same as close_nointr(), but for fclose() */
+ errno = 0; /* Extra safety: if the FILE* object is not encapsulating an fd, it might not set errno
+ * correctly. Let's hence initialize it to zero first, so that we aren't confused by any
+ * prior errno here */
if (fclose(f) == 0)
return 0;
if (errno == EINTR)
return 0;
- return
-errno
;
+ return
errno_or_else(EIO)
;
}
FILE* safe_fclose(FILE *f) {