SDL2のkeysymの取り扱いには注意しよう
環境
Linux arch-note 4.14.8-1-ARCH #1 SMP PREEMPT Wed Dec 20 21:27:44 UTC 2017 x86_64 GNU/Linux
上がC, 下はC++ではなくDです。どちらも同等の動きをします。
gistbf948df59f11c8e707c529f339119612
gist158724b107b0283dbc1169de6915e490
SDL_Event.key.keysym.symの値は、KEYDOWNしない時にはどうやらマウスのX座標がそのまま代入されるようで、画面に表示される線の上にマウスをもっていってやるとプログラムが落ちます(この場合のコードは)。
というわけで、SDL2でキーボードの入力を受けつけるときは、必ずSDL_Event.typeがSDL_KEYDOWNであることを確認するif文を挟むようにしましょう。
ちなみに、マウスの座標はSDL_GetMouseStateをつかえば取得できます。
追記: 知識ある方に共用体のためこうなるのは当然と教えてもらいました。確かにそうです。確認不足で申し訳ない。