diff options
| author | Ansariel <ansariel.hiller@phoenixviewer.com> | 2021-06-10 01:09:31 +0200 | 
|---|---|---|
| committer | Ansariel <ansariel.hiller@phoenixviewer.com> | 2021-06-10 01:09:31 +0200 | 
| commit | 4c558e85bd90d77696e9201b8996272176d7adc5 (patch) | |
| tree | 0336befe2a5cd50812893a411156fa64918035cf /indra | |
| parent | ad9ed0a94dfd37878b35b70e0a365017a1e548bf (diff) | |
Fix more crashes in disk cache due to boost error handling
Diffstat (limited to 'indra')
| -rw-r--r-- | indra/llfilesystem/lldiskcache.cpp | 24 | 
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() | 
