OSDN Git Service

[Fix] X11版で起動直後の初期化中にキーを押すとクラッシュする
authorHabu <habu1010+github@gmail.com>
Mon, 21 Mar 2022 11:19:46 +0000 (20:19 +0900)
committerHabu <habu1010+github@gmail.com>
Mon, 21 Mar 2022 11:19:46 +0000 (20:19 +0900)
commit1e2ba512cdc6d797c5929aa3614d875a7f7fc683
treee98d3c8565250e45b9dbdc6649f91a0a03654aaa
parent1b6ededb957393acd569e1d77b64d473fc397ebd
[Fix] X11版で起動直後の初期化中にキーを押すとクラッシュする

X11版は入力したキーが Modifier キーで修飾されている場合は自動的にその組み合わせを
マクロに登録するという処理がなされている(そのような実装になっている詳細な理由は不明)。
Modifier キーとは Mod1 が Altキー、 Mod2 が NumLock キーにあたる。
したがって、NumLockがオンの状態では普通にキーを押しただけでマクロが自動的に登録される。
一方、起動直後はまだマクロ情報の配列変数(std::vector)の領域確保が完了しておらず、
マクロを登録しようとすると配列外アクセスを起こす。
結果として、起動直後の初期化中に NumLock がオンになった状態でなんらかのキーを入力する
とクラッシュを引き起こす。

該当のマクロ登録部でマクロの配列の領域が確保済みかどうかをチェックし、確保されていない
場合はマクロの登録をスキップするようにする。
src/main-x11.cpp