Stop trying to cater to platforms with a broken HUGE_VAL definition. It
breaks other platforms (in this case, the hack for broken Cray systems in turn caused failure on a Mac system broken in a different way).
This commit is contained in:
parent
60ae701b3a
commit
1de41bfbc0
|
@ -229,19 +229,14 @@ extern "C" {
|
|||
*/
|
||||
#define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X))
|
||||
|
||||
/* According to
|
||||
* http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm
|
||||
* on some Cray systems HUGE_VAL is incorrectly (according to the C std)
|
||||
* defined to be the largest positive finite rather than infinity. We need
|
||||
* the std-conforming infinity meaning (provided the platform has one!).
|
||||
*
|
||||
* Then, according to a bug report on SourceForge, defining Py_HUGE_VAL as
|
||||
* INFINITY caused internal compiler errors under BeOS using some version
|
||||
* of gcc. Explicitly casting INFINITY to double made that problem go away.
|
||||
/* HUGE_VAL is supposed to expand to a positive double infinity. Python
|
||||
* uses Py_HUGE_VAL instead because some platforms are broken in this
|
||||
* respect. We used to embed code in pyport.h to try to worm around that,
|
||||
* but different platforms are broken in conflicting ways. If you're on
|
||||
* a platform where HUGE_VAL is defined incorrectly, fiddle your Python
|
||||
* config to #define Py_HUGE_VAL to something that works on your platform.
|
||||
*/
|
||||
#ifdef INFINITY
|
||||
#define Py_HUGE_VAL ((double)INFINITY)
|
||||
#else
|
||||
#ifndef Py_HUGE_VAL
|
||||
#define Py_HUGE_VAL HUGE_VAL
|
||||
#endif
|
||||
|
||||
|
|
18
Misc/NEWS
18
Misc/NEWS
|
@ -289,6 +289,24 @@ Tools/Demos
|
|||
|
||||
Build
|
||||
|
||||
- Accoring to Annex F of the current C standard,
|
||||
|
||||
The Standard C macro HUGE_VAL and its float and long double analogs,
|
||||
HUGE_VALF and HUGE_VALL, expand to expressions whose values are
|
||||
positive infinities.
|
||||
|
||||
Python only uses the double HUGE_VAL, and only to #define its own symbol
|
||||
Py_HUGE_VAL. Some platforms have incorrect definitions for HUGE_VAL.
|
||||
pyport.h used to try to worm around that, but the workarounds triggered
|
||||
other bugs on other platforms, so we gave up. If your platform defines
|
||||
HUGE_VAL incorrectly, you'll need to #define Py_HUGE_VAL to something
|
||||
that works on your platform. The only instance of this I'm sure about
|
||||
is on an unknown subset of Cray systems, described here:
|
||||
|
||||
http://www.cray.com/swpubs/manuals/SN-2194_2.0/html-SN-2194_2.0/x3138.htm
|
||||
|
||||
Presumably 2.3a1 breaks such systems. If anyone uses such a system, help!
|
||||
|
||||
- The configure option --without-doc-strings can be used to remove the
|
||||
doc strings from the builtin functions and modules; this reduces the
|
||||
size of the executable.
|
||||
|
|
Loading…
Reference in New Issue