aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorvaxerski <[email protected]>2022-06-21 22:42:54 +0200
committervaxerski <[email protected]>2022-06-21 22:42:54 +0200
commit48e33023afdd8e1683f275058d0a4148a41f5de4 (patch)
treee126af4da124fd3e5575328d78824d8bce55ddad
parent0b6c04355aa8e1858e07880904f9ae4dd594686d (diff)
downloadHyprland-48e33023afdd8e1683f275058d0a4148a41f5de4.tar.gz
Hyprland-48e33023afdd8e1683f275058d0a4148a41f5de4.zip
fix crash on number workspace with null mon
-rw-r--r--src/helpers/MiscFunctions.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index 6f9b465e..55b0ec83 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -158,6 +158,12 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
outName = WORKSPACENAME;
} else {
if (in[0] == 'm') {
+ if (!g_pCompositor->m_pLastMonitor) {
+ Debug::log(ERR, "Relative monitor workspace on monitor null!");
+ result = INT_MAX;
+ return result;
+ }
+
// monitor relative
result = (int)getPlusMinusKeywordResult(in.substr(1), 0);
@@ -207,7 +213,14 @@ int getWorkspaceIDFromString(const std::string& in, std::string& outName) {
outName = g_pCompositor->getWorkspaceByID(currentID)->m_szName;
} else {
- result = std::clamp((int)getPlusMinusKeywordResult(in, g_pCompositor->m_pLastMonitor->activeWorkspace), 1, INT_MAX);
+ if (g_pCompositor->m_pLastMonitor)
+ result = std::clamp((int)getPlusMinusKeywordResult(in, g_pCompositor->m_pLastMonitor->activeWorkspace), 1, INT_MAX);
+ else if (isNumber(in))
+ result = std::clamp(std::stoi(in), 1, INT_MAX);
+ else {
+ Debug::log(ERR, "Relative workspace on no mon!");
+ result = INT_MAX;
+ }
outName = std::to_string(result);
}
}