mirror of
https://github.com/rad4day/Waybar.git
synced 2023-12-21 10:22:59 +01:00
Fix crashes when using named workspaces in Hyprland
The first crash occurs when trying to parse the ID of a workspace as an uint, since named workspaces has negative IDs. This is fixed by using ints for workspace IDs instead of uints. The second crash occurs when converting a workspace name that isn't a number to an integer. This is fixed by wrapping std::stoi in a try block and only sorting by number, when both names can successfully be converted to integers.
This commit is contained in:
@ -6,6 +6,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
#include <iterator>
|
||||
#include <stdexcept>
|
||||
#include <vector>
|
||||
|
||||
#include "gtkmm/widget.h"
|
||||
@ -66,10 +67,13 @@ auto WorkspaceManager::workspace_comparator() const
|
||||
auto is_name_less = lhs->get_name() < rhs->get_name();
|
||||
auto is_name_eq = lhs->get_name() == rhs->get_name();
|
||||
auto is_coords_less = lhs->get_coords() < rhs->get_coords();
|
||||
auto is_number_less = std::stoi(lhs->get_name()) < std::stoi(rhs->get_name());
|
||||
|
||||
if (sort_by_number_) {
|
||||
return is_number_less;
|
||||
try {
|
||||
auto is_number_less = std::stoi(lhs->get_name()) < std::stoi(rhs->get_name());
|
||||
return is_number_less;
|
||||
} catch (std::invalid_argument) {
|
||||
}
|
||||
}
|
||||
|
||||
if (sort_by_name_) {
|
||||
|
Reference in New Issue
Block a user