From 2c5e306e14c0cedb57a19bf7f165d57510c5f62e Mon Sep 17 00:00:00 2001
From: maksymsproductengine <maksymsproductengine@lindenlab.com>
Date: Fri, 22 Nov 2013 20:16:37 +0200
Subject: [PATCH] MAINT-3474 FIXED crash on startup in
 LLTextureCache::purgeAllTextures(bool) attempting to delete texture cache

---
 indra/llvfs/lldiriterator.cpp | 23 ++++++++++++++++-------
 1 file changed, 16 insertions(+), 7 deletions(-)

diff --git a/indra/llvfs/lldiriterator.cpp b/indra/llvfs/lldiriterator.cpp
index 460d2a8b4fb..229608231ca 100755
--- a/indra/llvfs/lldiriterator.cpp
+++ b/indra/llvfs/lldiriterator.cpp
@@ -119,16 +119,25 @@ bool LLDirIterator::Impl::next(std::string &fname)
 
 	fs::directory_iterator end_itr; // default construction yields past-the-end
 	bool found = false;
-	while (mIter != end_itr && !found)
+
+	// Check if path is a directory.
+	try
 	{
-		boost::smatch match;
-		std::string name = mIter->path().filename().string();
-		if (found = boost::regex_match(name, match, mFilterExp))
+		while (mIter != end_itr && !found)
 		{
-			fname = name;
+			boost::smatch match;
+			std::string name = mIter->path().filename().string();
+			if (found = boost::regex_match(name, match, mFilterExp))
+			{
+				fname = name;
+			}
+
+			++mIter;
 		}
-
-		++mIter;
+	}
+	catch (const fs::filesystem_error& e)
+	{
+		llwarns << e.what() << llendl;
 	}
 
 	return found;
-- 
GitLab