16bit版で UTF8 to UTF8 のテストが失敗
2.1.0 のソースから、OpenWatcom 1.8 で DOS と OS/2 1.x 用の 16bit バイナリを作り、(Windows2000 上で)perl test.pl にかけたところ、どちらのバイナリも UTF8 to UTF8 の部分で失敗しました。
ひとまず以下のパッチでテストはパスするようになります。
diff -u nkf-2.1.0-org/nkf.c nkf-2.1.0/nkf.c --- nkf-2.1.0-org/nkf.c 2009-11-17 09:33:04 +0900 +++ nkf-2.1.0/nkf.c 2009-12-04 21:42:26 +0900 @@ -1028,7 +1028,7 @@ int shift = 20; c &= VALUE_MASK; while(shift >= 0){ - if(c >= 1<<shift){ + if(c >= NKF_INT32_C(1)<<shift){ while(shift >= 0){ (*f)(0, bin2hex(c>>shift)); shift -= 4; @@ -3062,10 +3062,11 @@ } static int -h_conv(FILE *f, int c1, int c2) +h_conv(FILE *f, nkf_char c1, nkf_char c2) { - int ret, c4, c3; + int ret; int hold_index; + nkf_char c3, c4; /** it must NOT be in the kanji shifte sequence */
( NKF_INT32_C(1) のほうは念のため入れました。なくてもテストの結果に影響は出ませんでした)
commit 6f44175f456fcfef79552ab2982f84d5afd8d8cd で修正しました。 報告ありがとうございました。
2.1.0 のソースから、OpenWatcom 1.8 で DOS と OS/2 1.x 用の 16bit バイナリを作り、(Windows2000 上で)perl test.pl にかけたところ、どちらのバイナリも UTF8 to UTF8 の部分で失敗しました。
ひとまず以下のパッチでテストはパスするようになります。
( NKF_INT32_C(1) のほうは念のため入れました。なくてもテストの結果に影響は出ませんでした)