Просмотр исходного кода

Merge pull request #7579 from Morph1984/swkbd-oob-array-access

qt_software_keyboard: Fix out of bounds array access
Mai M 4 лет назад
Родитель
Сommit
f0ed11e318
1 измененных файлов с 19 добавлено и 4 удалено
  1. 19 4
      src/yuzu/applets/qt_software_keyboard.cpp

+ 19 - 4
src/yuzu/applets/qt_software_keyboard.cpp

@@ -475,11 +475,26 @@ void QtSoftwareKeyboardDialog::open() {
     row = 0;
     column = 0;
 
-    const auto* const curr_button =
-        keyboard_buttons[static_cast<int>(bottom_osk_index)][row][column];
+    switch (bottom_osk_index) {
+    case BottomOSKIndex::LowerCase:
+    case BottomOSKIndex::UpperCase: {
+        const auto* const curr_button =
+            keyboard_buttons[static_cast<std::size_t>(bottom_osk_index)][row][column];
+
+        // This is a workaround for setFocus() randomly not showing focus in the UI
+        QCursor::setPos(curr_button->mapToGlobal(curr_button->rect().center()));
+        break;
+    }
+    case BottomOSKIndex::NumberPad: {
+        const auto* const curr_button = numberpad_buttons[row][column];
 
-    // This is a workaround for setFocus() randomly not showing focus in the UI
-    QCursor::setPos(curr_button->mapToGlobal(curr_button->rect().center()));
+        // This is a workaround for setFocus() randomly not showing focus in the UI
+        QCursor::setPos(curr_button->mapToGlobal(curr_button->rect().center()));
+        break;
+    }
+    default:
+        break;
+    }
 
     StartInputThread();
 }