From 3da2e15e6b95f02f66df461e87c8b896e450fdab Mon Sep 17 00:00:00 2001 From: Peter Lafreniere Date: Sun, 11 Feb 2024 20:55:31 -0500 Subject: [PATCH] IOFile: avoid clearing errors on null file struct When performing a default compilation with recent GCC & glibc, the use of -Werror=nonnull causes a build error. The error is given as IOFile::ClearError() can call std::clearerr() with a null file, which can trigger a null-pointer dereference in libc. Change the std::clearerr() call to be conditional on a file being open. --- Source/Core/Common/IOFile.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Source/Core/Common/IOFile.h b/Source/Core/Common/IOFile.h index 4b12c3188853..b5895333b1be 100644 --- a/Source/Core/Common/IOFile.h +++ b/Source/Core/Common/IOFile.h @@ -116,7 +116,8 @@ class IOFile void ClearError() { m_good = true; - std::clearerr(m_file); + if (IsOpen()) + std::clearerr(m_file); } private: