From: Jarkko Hietaniemi Date: Wed, 2 May 2001 20:12:45 +0000 (+0000) Subject: Workaround for UTS compiler casting bug from Hal Morris. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=206010116263d61868593b09468f8d6d204ba3ac;p=p5sagit%2Fp5-mst-13.2.git Workaround for UTS compiler casting bug from Hal Morris. p4raw-id: //depot/perl@9967 --- diff --git a/perl.h b/perl.h index 9e49913..83daa4d 100644 --- a/perl.h +++ b/perl.h @@ -1086,6 +1086,25 @@ typedef UVTYPE UV; # endif #endif +/* + I've tracked down a weird bug in Perl5.6.1 to the UTS compiler's + mishandling of MY_UV_MAX in util.c. It is defined as + #ifndef MY_UV_MAX + # define MY_UV_MAX ((UV)IV_MAX * (UV)2 + (UV)1) + #endif + The compiler handles {double floating point value} >= MY_UV_MAX as if + MY_UV_MAX were the signed integer -1. In fact it will do the same + thing with (UV)(0xffffffff), in place of MY_UV_MAX, though 0xffffffff + *without* the typecast to UV works fine. + + hom00@utsglobal.com (Hal Morris) 2001-05-02 + + */ + +#ifdef UTS +# define MY_UV_MAX 0xffffffff +#endif + #define IV_DIG (BIT_DIGITS(IVSIZE * 8)) #define UV_DIG (BIT_DIGITS(UVSIZE * 8))