diff --git a/indra/llfilesystem/lldiskcache.cpp b/indra/llfilesystem/lldiskcache.cpp
index f4d20d0e61b5f27ee9e3a71182331d6a4d27b488..dd8916dccb8dd334a6722b6e9a8413e3d3359f66 100644
--- a/indra/llfilesystem/lldiskcache.cpp
+++ b/indra/llfilesystem/lldiskcache.cpp
@@ -87,6 +87,7 @@ void LLDiskCache::purge()
         LL_INFOS() << "Total dir size before purge is " << dirFileSize(mCacheDir) << LL_ENDL;
     }
 
+    boost::system::error_code ec;
     auto start_time = std::chrono::high_resolution_clock::now();
 
     typedef std::pair<std::time_t, std::pair<uintmax_t, std::string>> file_info_t;
@@ -97,17 +98,25 @@ void LLDiskCache::purge()
 #else
     std::string cache_path(mCacheDir);
 #endif
-    if (boost::filesystem::is_directory(cache_path))
+    if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())
     {
         for (auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(cache_path), {}))
         {
-            if (boost::filesystem::is_regular_file(entry))
+            if (boost::filesystem::is_regular_file(entry, ec) && !ec.failed())
             {
                 if (entry.path().string().find(mCacheFilenamePrefix) != std::string::npos)
                 {
-                    uintmax_t file_size = boost::filesystem::file_size(entry);
+                    uintmax_t file_size = boost::filesystem::file_size(entry, ec);
+                    if (ec.failed())
+                    {
+                        continue;
+                    }
                     const std::string file_path = entry.path().string();
-                    const std::time_t file_time = boost::filesystem::last_write_time(entry);
+                    const std::time_t file_time = boost::filesystem::last_write_time(entry, ec);
+                    if (ec.failed())
+                    {
+                        continue;
+                    }
 
                     file_info.push_back(file_info_t(file_time, { file_size, file_path }));
                 }
@@ -131,7 +140,6 @@ void LLDiskCache::purge()
         if (file_size_total > mMaxSizeBytes)
         {
             action = "DELETE:";
-            boost::system::error_code ec;
             boost::filesystem::remove(entry.second.second, ec);
             if (ec.failed())
             {
@@ -321,20 +329,20 @@ void LLDiskCache::clearCache()
      * the component files but it's called infrequently so it's
      * likely just fine
      */
+    boost::system::error_code ec;
 #if LL_WINDOWS
     std::wstring cache_path(utf8str_to_utf16str(mCacheDir));
 #else
     std::string cache_path(mCacheDir);
 #endif
-    if (boost::filesystem::is_directory(cache_path))
+    if (boost::filesystem::is_directory(cache_path, ec) && !ec.failed())
     {
         for (auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(cache_path), {}))
         {
-            if (boost::filesystem::is_regular_file(entry))
+            if (boost::filesystem::is_regular_file(entry, ec) && !ec.failed())
             {
                 if (entry.path().string().find(mCacheFilenamePrefix) != std::string::npos)
                 {
-                    boost::system::error_code ec;
                     boost::filesystem::remove(entry, ec);
                     if (ec.failed())
                     {
@@ -359,20 +367,25 @@ uintmax_t LLDiskCache::dirFileSize(const std::string dir)
      * so if performance is ever an issue, optimizing this or removing it altogether,
      * is an easy win.
      */
+    boost::system::error_code ec;
 #if LL_WINDOWS
     std::wstring dir_path(utf8str_to_utf16str(dir));
 #else
     std::string dir_path(dir);
 #endif
-    if (boost::filesystem::is_directory(dir_path))
+    if (boost::filesystem::is_directory(dir_path, ec) && !ec.failed())
     {
         for (auto& entry : boost::make_iterator_range(boost::filesystem::directory_iterator(dir_path), {}))
         {
-            if (boost::filesystem::is_regular_file(entry))
+            if (boost::filesystem::is_regular_file(entry, ec) && !ec.failed())
             {
                 if (entry.path().string().find(mCacheFilenamePrefix) != std::string::npos)
                 {
-                    total_file_size += boost::filesystem::file_size(entry);
+                    uintmax_t file_size = boost::filesystem::file_size(entry, ec);
+                    if (!ec.failed())
+                    {
+                        total_file_size += file_size;
+                    }
                 }
             }
         }