diff options
author | ludwig <ludwig@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2008-11-03 17:03:54 +0000 |
---|---|---|
committer | ludwig <ludwig@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2008-11-03 17:03:54 +0000 |
commit | b31e8a67d9b1f11b9943b595a4fd66d3a07dd085 (patch) | |
tree | 712bb692c851148cf64d90d53dce9c753fb83923 /code/qcommon/q_math.c | |
parent | 5502af97628223ea8f5192647cb1dd5dbd72ae3b (diff) | |
download | ioquake3-aero-b31e8a67d9b1f11b9943b595a4fd66d3a07dd085.tar.gz ioquake3-aero-b31e8a67d9b1f11b9943b595a4fd66d3a07dd085.zip |
fix strict aliasing issues
Patch by Przemysław Iskra (#3805)
git-svn-id: svn://svn.icculus.org/quake3/trunk@1481 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/qcommon/q_math.c')
-rw-r--r-- | code/qcommon/q_math.c | 26 |
1 files changed, 10 insertions, 16 deletions
diff --git a/code/qcommon/q_math.c b/code/qcommon/q_math.c index bfaa60a..80c9f8e 100644 --- a/code/qcommon/q_math.c +++ b/code/qcommon/q_math.c @@ -501,10 +501,7 @@ void VectorRotate( vec3_t in, vec3_t matrix[3], vec3_t out ) */ float Q_rsqrt( float number ) { - union { - float f; - int i; - } t; + floatint_t t; float x2, y; const float threehalfs = 1.5F; @@ -519,9 +516,10 @@ float Q_rsqrt( float number ) } float Q_fabs( float f ) { - int tmp = * ( int * ) &f; - tmp &= 0x7FFFFFFF; - return * ( float * ) &tmp; + floatint_t fi; + fi.f = f; + fi.i &= 0x7FFFFFFF; + return fi.f; } #endif @@ -1301,15 +1299,11 @@ Don't pass doubles to this */ int Q_isnan( float x ) { - union - { - float f; - unsigned int i; - } t; + floatint_t fi; - t.f = x; - t.i &= 0x7FFFFFFF; - t.i = 0x7F800000 - t.i; + fi.f = x; + fi.ui &= 0x7FFFFFFF; + fi.ui = 0x7F800000 - fi.ui; - return (int)( (unsigned int)t.i >> 31 ); + return (int)( (unsigned int)fi.ui >> 31 ); } |