From 0fbfa3426f2b9e38ca7673623812e02b4de2f6b3 Mon Sep 17 00:00:00 2001 From: James Turner Date: Sun, 7 Mar 2021 15:34:57 +0000 Subject: [PATCH] Catalogs: check for local IO failures writing to disk Sentry.io shows some examples where we failed to write valid data to disk; check for that if possible. --- simgear/package/Catalog.cxx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/simgear/package/Catalog.cxx b/simgear/package/Catalog.cxx index b698a0c3..3b9514b5 100644 --- a/simgear/package/Catalog.cxx +++ b/simgear/package/Catalog.cxx @@ -143,9 +143,15 @@ protected: Dir d(m_owner->installRoot()); SGPath p = d.file("catalog.xml"); sg_ofstream f(p, std::ios::out | std::ios::trunc); - f.write(m_buffer.data(), m_buffer.size()); + const auto sz = m_buffer.size(); + f.write(m_buffer.data(), sz); f.close(); + if (f.fail()) { + m_owner->refreshComplete(Delegate::FAIL_FILESYSTEM); + return; + } + time(&m_owner->m_retrievedTime); m_owner->writeTimestamp(); m_owner->refreshComplete(Delegate::STATUS_REFRESHED);