Warning潰しで配列を初期化するようにした事で、以前からあった潜在的バグが表面化した。
初期化するようにする前のコードでは、ループのスコープで宣言した未初期化変数は、
前回のループの内容を保持している事を前提としたコードになっていたが、
当然ながらC言語の仕様にそのような保証は無く、たまたま正常に動いていたに過ぎない。
変数宣言をループの外に出すことで正常に動作するように修正。
char o_name[MAX_NLEN];
int use_essence;
essence_type *es_ptr;
+ bool able[22] = { 0 };
int menu_line = (use_menu ? 1 : 0);
choice = (always_show_list || use_menu) ? ESCAPE:1;
while (!flag)
{
- bool able[22] = {0};
if( choice==ESCAPE ) choice = ' ';
else if( !get_com(out_val, &choice, FALSE) )break;