summaryrefslogtreecommitdiff
path: root/src/managers/XCursorManager.cpp
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-10-12 15:18:34 +0100
committerVaxry <vaxry@vaxry.net>2024-10-12 15:18:39 +0100
commitc3f7c9bbb52b9ad3d24ccfcc5c552ed16c9985a5 (patch)
tree46265558d1d8279df51848c80520b570d37c1a61 /src/managers/XCursorManager.cpp
parentee8116ac5dc412dce924a0163074ce7988dd0cfc (diff)
xcursor: don't crash on broken permissions in X themes
ref #8079
Diffstat (limited to 'src/managers/XCursorManager.cpp')
-rw-r--r--src/managers/XCursorManager.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/managers/XCursorManager.cpp b/src/managers/XCursorManager.cpp
index 1e7ca535..93ee7965 100644
--- a/src/managers/XCursorManager.cpp
+++ b/src/managers/XCursorManager.cpp
@@ -117,9 +117,11 @@ void CXCursorManager::loadTheme(std::string const& name, int size, float scale)
cursors = loadStandardCursors(themeName, lastLoadSize);
} else {
for (auto const& p : paths) {
- auto dirCursors = loadAllFromDir(p, lastLoadSize);
- std::copy_if(dirCursors.begin(), dirCursors.end(), std::back_inserter(cursors),
- [this](auto const& p) { return std::none_of(cursors.begin(), cursors.end(), [&p](auto const& dp) { return dp->shape == p->shape; }); });
+ try {
+ auto dirCursors = loadAllFromDir(p, lastLoadSize);
+ std::copy_if(dirCursors.begin(), dirCursors.end(), std::back_inserter(cursors),
+ [this](auto const& p) { return std::none_of(cursors.begin(), cursors.end(), [&p](auto const& dp) { return dp->shape == p->shape; }); });
+ } catch (std::exception& e) { Debug::log(ERR, "XCursor path {} can't be loaded: threw error {}", p, e.what()); }
}
}