i18n bug?

Thiago Macieira thiago at kde.org
Mon Jul 11 15:56:00 BST 2005

David Faure wrote:
>in gettext-0.10.35 (and in kdecore/libintl.cpp), the hash_string
> function is defined as hval += (unsigned long) *str++;
>in gettext-0.14.x, the hash_string function is defined as
>  hval += (unsigned char) *str++;
>I'm not sure why it makes a difference, but with msgid=áà (in utf8, so
> length=4), the hash value is 267522336 with the first line, and 843216
> with the second line.

The problem is char's signedness:

$ echo áà | od -tx1
0000000 c3 a1 c3 a0 0a

(gdb) p/x (unsigned long)(char)0xC3
$5 = 0xffffffc3
(gdb) p/x (unsigned char)(char)0xC3
$6 = 0xc3

On the first, signed 0xC3 is sign-extended to 32 bits; on the second, it's 
zero-extended (there's an implicit promotion to unsigned long on the 
second, after being cast to unsigned char).

  Thiago Macieira  -  thiago (AT) macieira.info - thiago (AT) kde.org
    PGP/GPG: 0x6EF45358; fingerprint:
    E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

1. On frumscafte, hwonne time_t wæs náht, se scieppend þone circolwyrde 
wundorcræftlíge cennede and seo eorðe wæs idel and hit wæs gód.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20050711/bf1c963e/attachment.sig>

More information about the kde-core-devel mailing list