[Python-checkins] python/dist/src/Modules python.c,2.7,2.8

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
2002年12月28日 13:56:10 -0800


Update of /cvsroot/python/python/dist/src/Modules
In directory sc8-pr-cvs1:/tmp/cvs-serv11412/python/Modules
Modified Files:
	python.c 
Log Message:
Apparently FreeBSD enables some HW floating-point exceptions by default.
This can cause core dumps when Python runs. Python relies on the 754-
(and C99-) mandated default "non-stop" mode for FP exceptions. This
patch from Ben Laurie disables at least one FP exception on FreeBSD at
Python startup time.
Index: python.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Modules/python.c,v
retrieving revision 2.7
retrieving revision 2.8
diff -C2 -d -r2.7 -r2.8
*** python.c	2 Aug 2002 02:27:13 -0000	2.7
--- python.c	28 Dec 2002 21:56:08 -0000	2.8
***************
*** 3,9 ****
--- 3,24 ----
 #include "Python.h"
 
+ #ifdef __FreeBSD__
+ #include <floatingpoint.h>
+ #endif
+ 
 int
 main(int argc, char **argv)
 {
+ 	/* 754 requires that FP exceptions run in "no stop" mode by default,
+ 	 * and until C vendors implement C99's ways to control FP exceptions,
+ 	 * Python requires non-stop mode. Alas, some platforms enable FP
+ 	 * exceptions by default. Here we disable them.
+ 	 */
+ #ifdef __FreeBSD__
+ 	fp_except_t m;
+ 
+ 	m = fpgetmask();
+ 	fpsetmask(m & ~FP_X_OFL);
+ #endif
 	return Py_Main(argc, argv);
 }

AltStyle によって変換されたページ (->オリジナル) /