Martin Buchholz wrote:
On Sat, Aug 22, 2009 at 20:37, Xueming Shen<xueming.s...@sun.com> wrote:
-------------
 31 @@ -39,7 +63,7 @@
 32         typedef unsigned int u4;
 33  #    else
 34  #      if (ULONG_MAX == 0xffffffffUL)
 35 -         typedef unsigned long u4;
 36 +         typedef uLong u4;
 37  #      else
 38  #        if (USHRT_MAX == 0xffffffffUL)
 39             typedef unsigned short u4;

Using uLong in the above is probably not right,
since comparison against ULONG_MAX means
the corresponding type is unsigned long
(not that it matters)


#    if (UINT_MAX == 0xffffffffUL)
       typedef unsigned int u4;
#    else
#      if (ULONG_MAX == 0xffffffffUL)
         typedef unsigned long u4;
#      else
#        if (USHRT_MAX == 0xffffffffUL)
           typedef unsigned short u4;

I believe that on all platforms where the JDK will be built,
the first test UINT_MAX == 0xffffffffUL will be true,
so the suggested change will never pass the preprocessor.
I believe it to both be wrong and to have no effect, and increase the
size of local changes - but still OK to commit if you insist!
Oh, I see your point. Are you saying this "local change" is not necessary since it never gets preprocessed? OK, I admit I did the replace all in emacs:-) Maybe I should have touched those that affected. But given the nature of crc32, I'm pretty sure a 32-bit unsigned integer is what it should be (and is intended,) as the code purposely defines the "u4".

An alternative is to keep the crc32.c/h untouched, change the crc32() declare in zlib.h to unsigned long and then change the rest of jdk (our CRC.c and the pack code to prepare a 64-bit unsigned long on 64-bits), is this the direction you would prefer to?

Sherman

Reply via email to