Merge pull request #4191 from notpeelz/fix-length-error-output-description

fix: length_error thrown in handleOutputDescription
This commit is contained in:
Alexis Rouillard
2025-06-20 16:14:22 +01:00
committed by GitHub

View File

@ -86,7 +86,7 @@ void waybar::Client::handleOutputDone(void *data, struct zxdg_output_v1 * /*xdg_
} }
} }
} catch (const std::exception &e) { } catch (const std::exception &e) {
std::cerr << e.what() << '\n'; spdlog::warn("caught exception in zxdg_output_v1_listener::done: {}", e.what());
} }
} }
@ -97,7 +97,7 @@ void waybar::Client::handleOutputName(void *data, struct zxdg_output_v1 * /*xdg_
auto &output = client->getOutput(data); auto &output = client->getOutput(data);
output.name = name; output.name = name;
} catch (const std::exception &e) { } catch (const std::exception &e) {
std::cerr << e.what() << '\n'; spdlog::warn("caught exception in zxdg_output_v1_listener::name: {}", e.what());
} }
} }
@ -106,13 +106,13 @@ void waybar::Client::handleOutputDescription(void *data, struct zxdg_output_v1 *
auto *client = waybar::Client::inst(); auto *client = waybar::Client::inst();
try { try {
auto &output = client->getOutput(data); auto &output = client->getOutput(data);
const char *open_paren = strrchr(description, '(');
// Description format: "identifier (name)" // Description format: "identifier (name)"
size_t identifier_length = open_paren - description; auto s = std::string(description);
output.identifier = std::string(description, identifier_length - 1); auto pos = s.find(" (");
output.identifier = pos != std::string::npos ? s.substr(0, pos) : s;
} catch (const std::exception &e) { } catch (const std::exception &e) {
std::cerr << e.what() << '\n'; spdlog::warn("caught exception in zxdg_output_v1_listener::description: {}", e.what());
} }
} }