pkgsrc-Bugs archive

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

Re: pkg/30106



The following reply was made to PR pkg/30106; it has been noted by GNATS.

From: Martin Husemann <martin%duskware.de@localhost>
To: Shin'ichiro TAYA <taya%ba2.so-net.ne.jp@localhost>
Cc: gnats-bugs%netbsd.org@localhost, taya%netbsd.org@localhost
Subject: Re: pkg/30106
Date: Sat, 7 May 2005 16:08:15 +0200

 On Sat, May 07, 2005 at 06:40:37PM +0900, Shin'ichiro TAYA wrote:
 
 > const PRUint32 nanMask[2] =    {TX_DOUBLE_HI32_EXPMASK | 
 > TX_DOUBLE_HI32_MANTMASK
 > const double NaN = *((double*)nanMask); 
 
 This code may work by luck, but it is not guaranteed to work. The compiler
 will guarantee that the variable nanMask is properly aligned on a 32bit
 address, but the double* dereference needs to be aligned on a 64bit address
 (speaking of sparc64 systems here).
 
 So depending on declarations of other variables and link order, you will
 get working or broken object code.
 
 Now what to do? I think a real fix would be to use HUGE_VAL and NAN from
 <math.h> instead of the homegrown constants - if available. The header
 refers to ANSI/ISO C standard sections, so I suppose many systems nowadays
 will support these constants, and the NSPR maintainers probably will hapilly
 accept a change like this.
 
 Martin
 



Home | Main Index | Thread Index | Old Index