OSDN Git Service

SJIS環境で, 例として{八咫}と刻んだアイテムを鑑定の巻物や杖で鑑定しよ
authornothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 15 Sep 2003 07:16:01 +0000 (07:16 +0000)
committernothere <nothere@0568b783-4c39-0410-ac80-bf13821ea2a2>
Mon, 15 Sep 2003 07:16:01 +0000 (07:16 +0000)
commit4e69604403414dbb54c48de4eb602998da99f9ea
tree2c71223292d47465ae7cdf8270bb8770d26ccc61
parente7a5eccd5791095a024318b4b8cb449106e60481
SJIS環境で, 例として{八咫}と刻んだアイテムを鑑定の巻物や杖で鑑定しよ
うとすると選択肢の文字が指定していない文字に変わっていた. これはSJIS
では "八咫" の文字コードが0x94, 0xAA, 0x9A, 0x40であるため, この銘は
{(文字列)@'\0'} とみなされていた. 2回目以降のアイテム選択では
command_cmd = 0としたため, '@' の次である '\0' がマッチし, 文字列の次
にあるゴミを選択肢として使ってしまい, 場合によっては配列外アクセスも
起こす可能性があった. このバグに対処するため, init1.cにある_strchr()
をjapanese.cに移転し, strchr_j()と変更. アイテムの銘を始めとして日本
語文字列からstrchr()する場合に限りstrchr_j()を適切に#defineでかぶせて
使うようにした.
src/dungeon.c
src/externs.h
src/flavor.c
src/init1.c
src/japanese.c
src/object1.c
src/util.c
src/xtra1.c