diff --git a/glnx-fdio.h b/glnx-fdio.h index 1aa0c434657312f12d308b89003e0dcdd110e8a0..dc93b6877af251fb164cb91c36d462a827a988ce 100644 --- a/glnx-fdio.h +++ b/glnx-fdio.h @@ -318,16 +318,12 @@ glnx_fstatat_allow_noent (int dfd, int flags, GError **error) { - struct stat stbuf; - if (TEMP_FAILURE_RETRY (fstatat (dfd, path, out_buf ?: &stbuf, flags)) != 0) + G_GNUC_UNUSED struct stat unused_stbuf; + if (TEMP_FAILURE_RETRY (fstatat (dfd, path, out_buf ? out_buf : &unused_stbuf, flags)) != 0) { if (errno != ENOENT) - { - int errsv = errno; - (void) glnx_throw_errno_prefix (error, "fstatat(%s)", path); - errno = errsv; - return FALSE; - } + return glnx_throw_errno_prefix (error, "fstatat(%s)", path); + /* Note we preserve errno as ENOENT */ } else errno = 0;