From 1275139795e9b751af13ec10f96806d852591e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Sat, 13 Mar 2021 18:15:20 +0100 Subject: Settings_write: fix return value on error Return a negative errno on fprintf() or flcose() failure, not a return value of ferror() or flcose(). --- Settings.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'Settings.c') diff --git a/Settings.c b/Settings.c index 62fadf07..83b6cf37 100644 --- a/Settings.c +++ b/Settings.c @@ -333,9 +333,15 @@ int Settings_write(const Settings* this) { fprintf(fd, "topology_affinity=%d\n", (int) this->topologyAffinity); #endif - int r1 = ferror(fd); - int r2 = fclose(fd); - return r1 ? r1 : r2; + int r = 0; + + if (ferror(fd) != 0) + r = (errno != 0) ? -errno : -EBADF; + + if (fclose(fd) != 0) + r = r ? r : -errno; + + return r; } Settings* Settings_new(int initialCpuCount) { -- cgit v1.2.3