Manager: Fix crash when reading ENV variable as root
This commit is contained in:
+18
-12
@@ -72,17 +72,23 @@ void Machine::fetchSession()
|
|||||||
int8_t likelyWayland = 0;
|
int8_t likelyWayland = 0;
|
||||||
|
|
||||||
// Detect via environment variable
|
// Detect via environment variable
|
||||||
std::string env;
|
const char* env;
|
||||||
env = std::string(std::getenv("XDG_SESSION_TYPE"));
|
env = std::getenv("XDG_SESSION_TYPE");
|
||||||
if (env == "wayland") {
|
if (env != nullptr) {
|
||||||
likelyWayland++;
|
auto session = std::string(env);
|
||||||
|
if (session == "wayland") {
|
||||||
|
likelyWayland++;
|
||||||
|
}
|
||||||
|
else if (session == "x11") {
|
||||||
|
likelyWayland--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (env == "x11") {
|
env = std::getenv("WAYLAND_DISPLAY");
|
||||||
likelyWayland--;
|
if (env != nullptr) {
|
||||||
}
|
auto display = std::string(env);
|
||||||
env = std::string(std::getenv("WAYLAND_DISPLAY"));
|
if (display.find("wayland-", 0) == 0) {
|
||||||
if (env.find("wayland-", 0) == 0) {
|
likelyWayland++;
|
||||||
likelyWayland++;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Detect via Wayland socket
|
// Detect via Wayland socket
|
||||||
@@ -117,12 +123,12 @@ void Machine::fetchSession()
|
|||||||
std::string command;
|
std::string command;
|
||||||
std::getline(stream, command);
|
std::getline(stream, command);
|
||||||
|
|
||||||
if (command == "Xwayland" || command == "hyprland" || command == "sway") {
|
if (command == "Xwayland" || command == "sway" || command == "hyprland") {
|
||||||
likelyWayland++;
|
likelyWayland++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (command == "Xorg" || command == "xinit" || command == "bspwm") {
|
if (command == "Xorg" || command == "xinit" || command == "i3" || command == "bspwm") {
|
||||||
likelyWayland--;
|
likelyWayland--;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user