fix: Handle empty layout names and language codes in layout parser

This commit is contained in:
Nick Bolton 2025-03-27 13:11:02 +00:00
parent 6e9694b5d8
commit d6087cc5bd

View File

@ -114,6 +114,11 @@ void X11LayoutsParser::convertLayoutToISO639_2(
}
for (size_t i = 0; i < layoutNames.size(); i++) {
const auto &layoutName = layoutNames[i];
if (layoutNames[i].empty()) {
LOG((CLOG_DEBUG "skip converting empty layout name"));
continue;
}
auto langIter =
std::find_if(allLang.begin(), allLang.end(), [&layoutName](const Lang &l) { return l.name == layoutName; });
if (langIter == allLang.end()) {
@ -174,6 +179,11 @@ std::string X11LayoutsParser::convertLayotToISO(
const std::string &pathToEvdevFile, const std::string &layoutLangCode, bool needToReloadFiles
)
{
if (layoutLangCode.empty()) {
LOG((CLOG_DEBUG "skip converting empty layout lang code"));
return "";
}
std::vector<std::string> iso639_2Codes;
convertLayoutToISO639_2(pathToEvdevFile, needToReloadFiles, {layoutLangCode}, {""}, iso639_2Codes);
if (iso639_2Codes.empty()) {