mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 10:26:02 +00:00 
			
		
		
		
	Change PyFPE_END_PROTECT to PyFPE_END_PROTECT(v). v should be the
last variable to which a floating point expression is assigned. The macro passes its address to a dummy function so that the optimizer can't delay calculating its value until after the macro.
This commit is contained in:
		
							parent
							
								
									efd3a3a843
								
							
						
					
					
						commit
						1f06beeedd
					
				
					 1 changed files with 3 additions and 3 deletions
				
			
		|  | @ -131,7 +131,7 @@ extern "C" { | ||||||
| #include <math.h> | #include <math.h> | ||||||
| extern jmp_buf PyFPE_jbuf; | extern jmp_buf PyFPE_jbuf; | ||||||
| extern int PyFPE_counter; | extern int PyFPE_counter; | ||||||
| extern double PyFPE_dummy(void); | extern double PyFPE_dummy(); | ||||||
| 
 | 
 | ||||||
| #define PyFPE_START_PROTECT(err_string, leave_stmt) \ | #define PyFPE_START_PROTECT(err_string, leave_stmt) \ | ||||||
| if (!PyFPE_counter++ && setjmp(PyFPE_jbuf)) { \ | if (!PyFPE_counter++ && setjmp(PyFPE_jbuf)) { \ | ||||||
|  | @ -149,12 +149,12 @@ if (!PyFPE_counter++ && setjmp(PyFPE_jbuf)) { \ | ||||||
|  * which counts down PyFPE_counter, and thereby monkey wrench the overeager |  * which counts down PyFPE_counter, and thereby monkey wrench the overeager | ||||||
|  * optimizer. Better solutions are welcomed.... |  * optimizer. Better solutions are welcomed.... | ||||||
|  */ |  */ | ||||||
| #define PyFPE_END_PROTECT PyFPE_counter -= (int)PyFPE_dummy(); | #define PyFPE_END_PROTECT(v) PyFPE_counter -= (int)PyFPE_dummy(&(v)); | ||||||
| 
 | 
 | ||||||
| #else | #else | ||||||
| 
 | 
 | ||||||
| #define PyFPE_START_PROTECT(err_string, leave_stmt) | #define PyFPE_START_PROTECT(err_string, leave_stmt) | ||||||
| #define PyFPE_END_PROTECT | #define PyFPE_END_PROTECT(v) | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Guido van Rossum
						Guido van Rossum