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

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
Sat, 28 Dec 2002 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);
  }