<HTML>
the code of String.hashCode() (in librairies/javalib/java/lang/String.java)
is not correct (1 character string always return a hash value of 0).
<BR>it seems that :
<BR>- for string &lt; 15 characters, the first character is never used
in computing hash value

<P>Please find enclosed a diff -u that should solve this issue (the code
should behave the same as in kaffe/kaffevm/string.c (hashUtf8String() for
hashing Utf8 strings)
<BR>&nbsp;

<P>+++ String.java Wed Aug&nbsp; 5 08:12:37 1998
<BR>--- String.java.orig&nbsp;&nbsp;&nbsp; Wed Aug&nbsp; 5 08:13:21 1998
<BR>@@ -227,12 +227,12 @@
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int hash = 0;

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( count &lt;= 15 ) {
<BR>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for ( i=offset+1; i&lt;n; i++ )
<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for ( i=offset; i&lt;n; i++ )
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hash = (37 * hash) + value[i];
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
int skip = count / 8;
<BR>-&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for ( i=offset+skip; i&lt;n; i+=skip )
<BR>+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for ( i=offset+skip-1; i&lt;n; i+=skip )
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
hash = (39 * hash) + value[i];
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return hash;
<PRE>--&nbsp;
--------------------
Eric Pouech (eric.pouech@lemel.fr)</PRE>
&nbsp;</HTML>