From 8e544370d9d6534d2461cd38ce27a8b0a980427c Mon Sep 17 00:00:00 2001 From: Filip Markovic Date: Tue, 6 Dec 2022 07:12:46 +0100 Subject: [PATCH 1/2] fix crash when XCURSOR_SIZE environment variable is set incorrectly --- src/Hyprpaper.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Hyprpaper.cpp b/src/Hyprpaper.cpp index 361d30e..70ebde8 100644 --- a/src/Hyprpaper.cpp +++ b/src/Hyprpaper.cpp @@ -136,8 +136,13 @@ void CHyprpaper::recheckMonitor(SMonitor* pMonitor) { zwlr_layer_surface_v1_ack_configure(pMonitor->pCurrentLayerSurface->pLayerSurface, pMonitor->configureSerial); int XCURSOR_SIZE = 24; - if (getenv("XCURSOR_SIZE")) { - XCURSOR_SIZE = std::stoi(getenv("XCURSOR_SIZE")); + if (getenv("XCURSOR_SIZE") != NULL) { + char *endptr; + XCURSOR_SIZE = strtol(getenv("XCURSOR_SIZE"), &endptr, 10); + if (*endptr || XCURSOR_SIZE <= 0) { + Debug::log(WARN, "XCURSOR_SIZE environment variable is set incorrectly"); + XCURSOR_SIZE = 24; + } } pMonitor->pCurrentLayerSurface->pCursorImg = wl_cursor_theme_get_cursor(wl_cursor_theme_load(getenv("XCURSOR_THEME"), XCURSOR_SIZE * pMonitor->scale, m_sSHM), "left_ptr")->images[0]; @@ -233,9 +238,9 @@ void CHyprpaper::clearWallpaperFromMonitor(const std::string& monname) { if (it != m_mMonitorActiveWallpaperTargets.end()) m_mMonitorActiveWallpaperTargets.erase(it); - + if (PMONITOR->pCurrentLayerSurface) { - + PMONITOR->pCurrentLayerSurface = nullptr; PMONITOR->wantsACK = false; @@ -256,7 +261,7 @@ void CHyprpaper::ensureMonitorHasActiveWallpaper(SMonitor* pMonitor) { it = m_mMonitorActiveWallpaperTargets.find(pMonitor); } - if (it->second) + if (it->second) return; // has // get the target @@ -296,7 +301,7 @@ void CHyprpaper::ensureMonitorHasActiveWallpaper(SMonitor* pMonitor) { // create it for thy if it doesnt have if (!pMonitor->pCurrentLayerSurface) createLSForMonitor(pMonitor); - else + else pMonitor->wantsReload = true; } From be66d710b3b54f9b3a89a234359e4faa5b9352a8 Mon Sep 17 00:00:00 2001 From: Filip Markovic Date: Sun, 18 Dec 2022 22:27:13 +0100 Subject: [PATCH 2/2] Adjust to match modern c++ style --- src/Hyprpaper.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Hyprpaper.cpp b/src/Hyprpaper.cpp index 70ebde8..c569038 100644 --- a/src/Hyprpaper.cpp +++ b/src/Hyprpaper.cpp @@ -136,10 +136,12 @@ void CHyprpaper::recheckMonitor(SMonitor* pMonitor) { zwlr_layer_surface_v1_ack_configure(pMonitor->pCurrentLayerSurface->pLayerSurface, pMonitor->configureSerial); int XCURSOR_SIZE = 24; - if (getenv("XCURSOR_SIZE") != NULL) { - char *endptr; - XCURSOR_SIZE = strtol(getenv("XCURSOR_SIZE"), &endptr, 10); - if (*endptr || XCURSOR_SIZE <= 0) { + if (const auto CURSORSIZENV = getenv("XCURSOR_SIZE"); CURSORSIZENV) { + try { + if (XCURSOR_SIZE = std::stoi(CURSORSIZENV); XCURSOR_SIZE <= 0) { + throw std::exception(); + } + } catch (...) { Debug::log(WARN, "XCURSOR_SIZE environment variable is set incorrectly"); XCURSOR_SIZE = 24; }