From 5f0fc7ab93b08c702556006eae09cadb3b5b23ac Mon Sep 17 00:00:00 2001 From: lotodore Date: Fri, 7 Dec 2007 23:29:49 +0000 Subject: [PATCH] Workaround for boost uncaught exception problem on MacOS 10.5. --- src/core/common/avatarmanager.cpp | 54 ++++++++++++++++++------------- 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/src/core/common/avatarmanager.cpp b/src/core/common/avatarmanager.cpp index de7b26a0..2511d932 100644 --- a/src/core/common/avatarmanager.cpp +++ b/src/core/common/avatarmanager.cpp @@ -515,30 +515,40 @@ bool AvatarManager::InternalReadDirectory(const std::string &dir, AvatarMap &avatars) { bool retVal = true; - try - { - // This method is not thread safe. Only call after locking the map. - directory_iterator i(dir); - directory_iterator end; + path tmpPath(dir); - while (i != end) - { - if (is_regular(i->status())) - { - string md5sum(basename(i->path())); - MD5Buf md5buf; - string fileName(i->path().file_string()); - if (md5buf.FromString(md5sum)) - { - // Only consider files with md5sum as name. - avatars.insert(AvatarMap::value_type(md5buf, fileName)); - } - } - ++i; - } - } catch (...) + if (exists(tmpPath) && is_directory(tmpPath)) { - LOG_ERROR("Exception caught when trying to scan avatar directory."); + try + { + // This method is not thread safe. Only call after locking the map. + directory_iterator i(tmpPath); + directory_iterator end; + + while (i != end) + { + if (is_regular(i->status())) + { + string md5sum(basename(i->path())); + MD5Buf md5buf; + string fileName(i->path().file_string()); + if (md5buf.FromString(md5sum)) + { + // Only consider files with md5sum as name. + avatars.insert(AvatarMap::value_type(md5buf, fileName)); + } + } + ++i; + } + } catch (...) + { + LOG_ERROR("Exception caught when trying to scan avatar directory."); + retVal = false; + } + } + else + { + LOG_ERROR("Avatar directory does not exist."); retVal = false; } return retVal;