Skip to content

Commit e163d74

Browse files
committed
Fix segfault by using QString in Language::addSelectedLayout()
1 parent 8819975 commit e163d74

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

src/evdev-lst-layouts.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#pragma once
2+
#include <QString>
23
#include <vector>
34

45
// Auto-generated based on "/usr/share/X11/xkb/rules/evdev.lst"
56

67
struct layout
78
{
8-
const char *code;
9-
const char *description;
9+
QString code;
10+
QString description;
1011
};
1112

1213
static std::vector<struct layout> evdev_lst_layouts = {

src/gen-layout-list

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@
22
from enum import Enum
33

44
HEADER="""#pragma once
5+
#include <QString>
56
#include <vector>
67
78
// Auto-generated based on "/usr/share/X11/xkb/rules/evdev.lst"
89
910
struct layout
1011
{
11-
const char *code;
12-
const char *description;
12+
QString code;
13+
QString description;
1314
};
1415
1516
static std::vector<struct layout> evdev_lst_layouts = {"""

src/language.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ void Language::activate()
2727
/* Keyboard Layout */
2828
ui->layoutCombo->addItem(tr("Select layout to add..."));
2929
for (auto layout : evdev_lst_layouts) {
30-
ui->layoutCombo->addItem(QString(layout.description));
30+
ui->layoutCombo->addItem(layout.description);
3131
}
3232
}
3333

@@ -47,10 +47,11 @@ void Language::onApply()
4747

4848
void Language::addSelectedLayout(void)
4949
{
50-
const char *description = ui->layoutCombo->currentText().toLatin1().data();
50+
QString description = ui->layoutCombo->currentText();
51+
5152
for (auto layout : evdev_lst_layouts) {
52-
if (!strcmp(description, layout.description)) {
53-
m_model->addLayout(QString(layout.code), QString(layout.description));
53+
if (description == layout.description) {
54+
m_model->addLayout(layout.code, layout.description);
5455
}
5556
}
5657
}

0 commit comments

Comments
 (0)