|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | */ | 
|  | #include <fenv.h> | 
|  |  | 
|  | /* 7.6.4.4 | 
|  | The feupdateenv function saves the currently raised exceptions in | 
|  | its automatic storage, installs the floating-point environment | 
|  | represented by the object pointed to by envp, and then raises the | 
|  | saved exceptions. The argument envp shall point to an object | 
|  | set by a call to feholdexcept or fegetenv, or equal the macro | 
|  | FE_DFL_ENV or an implementation-defined environment macro. */ | 
|  |  | 
|  | /* FIXME: this works but surely there must be a better way.  */ | 
|  |  | 
|  | int feupdateenv (const fenv_t * envp) | 
|  | { | 
|  | unsigned int _fexcept = fetestexcept (FE_ALL_EXCEPT); /*save excepts */ | 
|  | fesetenv (envp); /* install the env  */ | 
|  | feraiseexcept (_fexcept); /* raise the except */ | 
|  | return 0; | 
|  | } | 
|  |  |