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.
This commit is contained in:
James Turner
2021-03-07 15:34:57 +00:00
committed by Automatic Release Builder
parent 57b4060eb3
commit 0fbfa3426f

View File

@@ -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);