summaryrefslogtreecommitdiff
path: root/indra/llfilesystem
diff options
context:
space:
mode:
authorAnsariel <ansariel.hiller@phoenixviewer.com>2021-06-10 01:09:31 +0200
committerAnsariel <ansariel.hiller@phoenixviewer.com>2021-06-10 01:09:31 +0200
commit4c558e85bd90d77696e9201b8996272176d7adc5 (patch)
tree0336befe2a5cd50812893a411156fa64918035cf /indra/llfilesystem
parentad9ed0a94dfd37878b35b70e0a365017a1e548bf (diff)
Fix more crashes in disk cache due to boost error handling
Diffstat (limited to 'indra/llfilesystem')
-rw-r--r--indra/llfilesystem/lldiskcache.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/indra/llfilesystem/lldiskcache.cpp b/indra/llfilesystem/lldiskcache.cpp
index 905351886f..f4d20d0e61 100644
--- a/indra/llfilesystem/lldiskcache.cpp
+++ b/indra/llfilesystem/lldiskcache.cpp
@@ -253,9 +253,15 @@ void LLDiskCache::updateFileAccessTime(const std::string file_path)
// current time
const std::time_t cur_time = std::time(nullptr);
+ boost::system::error_code ec;
#if LL_WINDOWS
// file last write time
- const std::time_t last_write_time = boost::filesystem::last_write_time(utf8str_to_utf16str(file_path));
+ const std::time_t last_write_time = boost::filesystem::last_write_time(utf8str_to_utf16str(file_path), ec);
+ if (ec.failed())
+ {
+ LL_WARNS() << "Failed to read last write time for cache file " << file_path << ": " << ec.message() << LL_ENDL;
+ return;
+ }
// delta between cur time and last time the file was written
const std::time_t delta_time = cur_time - last_write_time;
@@ -264,11 +270,16 @@ void LLDiskCache::updateFileAccessTime(const std::string file_path)
// before the last one
if (delta_time > time_threshold)
{
- boost::filesystem::last_write_time(utf8str_to_utf16str(file_path), cur_time);
+ boost::filesystem::last_write_time(utf8str_to_utf16str(file_path), cur_time, ec);
}
#else
// file last write time
- const std::time_t last_write_time = boost::filesystem::last_write_time(file_path);
+ const std::time_t last_write_time = boost::filesystem::last_write_time(file_path, ec);
+ if (ec.failed())
+ {
+ LL_WARNS() << "Failed to read last write time for cache file " << file_path << ": " << ec.message() << LL_ENDL;
+ return;
+ }
// delta between cur time and last time the file was written
const std::time_t delta_time = cur_time - last_write_time;
@@ -277,9 +288,14 @@ void LLDiskCache::updateFileAccessTime(const std::string file_path)
// before the last one
if (delta_time > time_threshold)
{
- boost::filesystem::last_write_time(file_path, cur_time);
+ boost::filesystem::last_write_time(file_path, cur_time, ec);
}
#endif
+
+ if (ec.failed())
+ {
+ LL_WARNS() << "Failed to update last write time for cache file " << file_path << ": " << ec.message() << LL_ENDL;
+ }
}
const std::string LLDiskCache::getCacheInfo()