store: add catch blocks for dirstamp/set_dirstamp

This commit is contained in:
Dirk-Jan C. Binnema
2021-12-18 15:21:48 +02:00
parent abd0abf5c8
commit 4f02702510

View File

@ -487,11 +487,14 @@ Store::dirstamp(const std::string& path) const
{ {
LOCKED; LOCKED;
const auto ts = priv_->db().get_metadata(path); constexpr auto epoch = static_cast<time_t>(0);
if (ts.empty()) return xapian_try([&] {
return 0; const auto ts = priv_->db().get_metadata(path);
else if (ts.empty())
return (time_t)strtoll(ts.c_str(), NULL, 16); return epoch;
else
return static_cast<time_t>(strtoll(ts.c_str(), NULL, 16));
}, epoch);
} }
void void
@ -500,9 +503,11 @@ Store::set_dirstamp(const std::string& path, time_t tstamp)
LOCKED; LOCKED;
std::array<char, 2 * sizeof(tstamp) + 1> data{}; std::array<char, 2 * sizeof(tstamp) + 1> data{};
const std::size_t len = g_snprintf(data.data(), data.size(), "%zx", (size_t)tstamp); const auto len = static_cast<size_t>(g_snprintf(data.data(), data.size(), "%zx", tstamp));
priv_->writable_db().set_metadata(path, std::string{data.data(), len}); xapian_try([&] {
priv_->writable_db().set_metadata(path, std::string{data.data(), len});
});
} }
MuMsg* MuMsg*