mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2024-11-10 07:21:58 +00:00
* mathlib.h (IS_NAN): Fixed strict aliasing violation by providing
an inline function using a float/int union instead of the original macro. git-svn-id: svn://svn.code.sf.net/p/quakespasm/code/trunk/quakespasm@650 af15c1b1-3010-417e-b628-4374ebc0bcbd
This commit is contained in:
parent
4f04731c51
commit
8d997767e7
1 changed files with 10 additions and 2 deletions
|
@ -37,8 +37,16 @@ struct mplane_s;
|
|||
|
||||
extern vec3_t vec3_origin;
|
||||
|
||||
#define nanmask (255<<23) /* 7F800000 */
|
||||
#define IS_NAN(x) (((*(int *) &x) & nanmask) == nanmask)
|
||||
#define nanmask (255 << 23) /* 7F800000 */
|
||||
#if 0 /* macro is violating strict aliasing rules */
|
||||
#define IS_NAN(x) (((*(int *) (char *) &x) & nanmask) == nanmask)
|
||||
#else
|
||||
static inline int IS_NAN (float x) {
|
||||
union { float f; int i; } num;
|
||||
num.f = x;
|
||||
return ((num.i & nanmask) == nanmask);
|
||||
}
|
||||
#endif
|
||||
|
||||
#define Q_rint(x) ((x) > 0 ? (int)((x) + 0.5) : (int)((x) - 0.5)) //johnfitz -- from joequake
|
||||
|
||||
|
|
Loading…
Reference in a new issue