OSDN Git Service

[fix]鍛冶師で武器/防具の強化ができない問題を修正
authorHabu <habu@users.sourceforge.jp>
Fri, 21 Sep 2018 14:00:41 +0000 (23:00 +0900)
committerHabu <habu@users.sourceforge.jp>
Fri, 21 Sep 2018 14:00:41 +0000 (23:00 +0900)
Warning潰しで配列を初期化するようにした事で、以前からあった潜在的バグが表面化した。
初期化するようにする前のコードでは、ループのスコープで宣言した未初期化変数は、
前回のループの内容を保持している事を前提としたコードになっていたが、
当然ながらC言語の仕様にそのような保証は無く、たまたま正常に動いていたに過ぎない。
変数宣言をループの外に出すことで正常に動作するように修正。

src/object2.c

index b800143..755af89 100644 (file)
@@ -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;