From: habu Date: Mon, 2 Sep 2002 22:34:01 +0000 (+0000) Subject: モンスターボールや像などのアイテムはpvalからモンスター番号を取得しているが、すべてのアイテムでモンスター配列を見ていたため食糧などの巨大なpvalを持つアイテムで配列... X-Git-Tag: v2.1.2~1838 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=f092dfd2a56cbe8d945a7b8ba6da6be538ea929d;p=hengbandforosx%2Fhengbandosx.git モンスターボールや像などのアイテムはpvalからモンスター番号を取得しているが、すべてのアイテムでモンスター配列を見ていたため食糧などの巨大なpvalを持つアイテムで配列外アクセスが起こっていたのを修正。 --- diff --git a/src/flavor.c b/src/flavor.c index 2f1c2d330..d11f08968 100644 --- a/src/flavor.c +++ b/src/flavor.c @@ -1092,8 +1092,6 @@ void object_desc(char *buf, object_type *o_ptr, int pref, int mode) object_kind *k_ptr = &k_info[o_ptr->k_idx]; - monster_race *r_ptr = &r_info[o_ptr->pval]; - /* Extract some flags */ object_flags(o_ptr, flgs); @@ -1130,6 +1128,8 @@ void object_desc(char *buf, object_type *o_ptr, int pref, int mode) case TV_CAPTURE: { + monster_race *r_ptr = &r_info[o_ptr->pval]; + if (known) { if (!o_ptr->pval) @@ -1170,6 +1170,8 @@ void object_desc(char *buf, object_type *o_ptr, int pref, int mode) case TV_FIGURINE: case TV_STATUE: { + monster_race *r_ptr = &r_info[o_ptr->pval]; + #ifdef JP modstr = r_name + r_ptr->name; #else @@ -1194,6 +1196,8 @@ void object_desc(char *buf, object_type *o_ptr, int pref, int mode) /* Corpses */ case TV_CORPSE: { + monster_race *r_ptr = &r_info[o_ptr->pval]; + modstr = r_name + r_ptr->name; @@ -1715,9 +1719,14 @@ void object_desc(char *buf, object_type *o_ptr, int pref, int mode) } /* Unique corpses are unique */ - else if ((o_ptr->tval == TV_CORPSE) && (r_ptr->flags1 & RF1_UNIQUE)) + else if (o_ptr->tval == TV_CORPSE) { - t = object_desc_str(t, "The "); + monster_race *r_ptr = &r_info[o_ptr->pval]; + + if (r_ptr->flags1 & RF1_UNIQUE) + { + t = object_desc_str(t, "The "); + } } /* A single one, with a vowel in the modifier */