[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:42763] Re: [gettext] ja.po の msgid に non-ASCII 文字は使える?



At Wed, 2 Feb 2005 02:04:21 +0900,
hma@xxxxxxxxxxxxx wrote:
> ハッシュ計算の中身とか、生成される .mo のフォーマットとか
> まだ理解できていないので、私一人で追い続けるとすると、
> もっと時間がかかりそうです。
> この段階で GlibC の開発元に一度投げた方がいいでしょうか?

濱崎さんのテストプログラムは試していませんが、手元で作成したテストプロ
グラムを最新 cvs で試したところ正常動作しています。おそらく以下のパッ
チで修正されたのでしょう。次の glibc 更新の時 (sarge リリース以後) に
直ります。

2003-10-19  Bruno Haible  <bruno@xxxxxxxxx>

        * intl/hash-string.c (hash_string): Zero-extend each char from the
        string; the old code did a sign-extend on some platforms.

At Wed, 2 Feb 2005 05:31:44 +0900,
YOSHIFUJI Hideaki / 吉藤英明 wrote:
> diff -ru gettext-0.14.1/gettext-runtime/intl/hash-string.h gettext-0.14.1-fix/gettext-runtime/intl/hash-string.h
> --- gettext-0.14.1/gettext-runtime/intl/hash-string.h	2003-10-24 19:23:03.000000000 +0900
> +++ gettext-0.14.1-fix/gettext-runtime/intl/hash-string.h	2005-02-02 05:16:17.000000000 +0900
> @@ -36,7 +36,7 @@
>    while (*str != '\0')
>      {
>        hval <<= 4;
> -      hval += (unsigned char) *str++;
> +      hval += (unsigned long int) *str++;
>        g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
>        if (g != 0)
>  	{

もしハッシュのバグが原因であるとすれば、おそらく glibc に以下のパッチ
をあてれば直るでしょう (検証はしていません)。

--- intl/hash-string.c  11 Jun 2003 21:46:03 -0000      1.1
+++ intl/hash-string.c  24 Oct 2003 03:22:26 -0000      1.2
@@ -35,7 +35,7 @@ __hash_string (str_param)
   while (*str != '\0')
     {
       hval <<= 4;
-      hval += (unsigned long int) *str++;
+      hval += (unsigned char) *str++;
       g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
       if (g != 0)
        {

Regards,
-- gotom