1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-28 16:00:22 +02:00

avoid type-punning errors in guile_ieee_init on OSF

* libguile/numbers.c (guile_ieee_init): Avoid type-punning errors on
  OSF. Thanks to Jay Krell for the report.
This commit is contained in:
Andy Wingo 2010-06-10 14:34:51 +02:00
parent 899a17a783
commit 2462fad237

View file

@ -1,4 +1,4 @@
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
/* Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
*
* Portions Copyright 1990, 1991, 1992, 1993 by AT&T Bell Laboratories
* and Bellcore. See scm_divide.
@ -620,7 +620,14 @@ guile_ieee_init (void)
#elif HAVE_DINFINITY
/* OSF */
extern unsigned int DINFINITY[2];
guile_Inf = (*((double *) (DINFINITY)));
union
{
double d;
int i[2];
} alias;
alias.i[0] = DINFINITY[0];
alias.i[1] = DINFINITY[1];
guile_Inf = alias.d;
#else
double tmp = 1e+10;
guile_Inf = tmp;
@ -651,7 +658,14 @@ guile_ieee_init (void)
{
/* OSF */
extern unsigned int DQNAN[2];
guile_NaN = (*((double *)(DQNAN)));
union
{
double d;
int i[2];
} alias;
alias.i[0] = DQNAN[0];
alias.i[1] = DQNAN[1];
guile_NaN = alias.d;
}
#else
guile_NaN = guile_Inf / guile_Inf;