From d7b14f20b2449a81d7168eec62a78ee7922a7c28 Mon Sep 17 00:00:00 2001 From: Habu Date: Fri, 21 Sep 2018 23:00:41 +0900 Subject: [PATCH] =?utf8?q?[fix]=E9=8D=9B=E5=86=B6=E5=B8=AB=E3=81=A7?= =?utf8?q?=E6=AD=A6=E5=99=A8/=E9=98=B2=E5=85=B7=E3=81=AE=E5=BC=B7=E5=8C=96?= =?utf8?q?=E3=81=8C=E3=81=A7=E3=81=8D=E3=81=AA=E3=81=84=E5=95=8F=E9=A1=8C?= =?utf8?q?=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Warning潰しで配列を初期化するようにした事で、以前からあった潜在的バグが表面化した。 初期化するようにする前のコードでは、ループのスコープで宣言した未初期化変数は、 前回のループの内容を保持している事を前提としたコードになっていたが、 当然ながらC言語の仕様にそのような保証は無く、たまたま正常に動いていたに過ぎない。 変数宣言をループの外に出すことで正常に動作するように修正。 --- src/object2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/object2.c b/src/object2.c index b80014378..755af8900 100644 --- a/src/object2.c +++ b/src/object2.c @@ -8106,6 +8106,7 @@ static void add_essence(ESSENCE_IDX mode) char o_name[MAX_NLEN]; int use_essence; essence_type *es_ptr; + bool able[22] = { 0 }; int menu_line = (use_menu ? 1 : 0); @@ -8138,7 +8139,6 @@ static void add_essence(ESSENCE_IDX mode) 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; -- 2.11.0