From 26e3f00882409e2e479f33dade7acd6f824749ec Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 25 Jun 2009 13:27:37 +0000 Subject: [PATCH] From Mathias Froehlich, "Fix possible problem with aliasing rules... and fix a gcc warning :) Use a union to determine if we are on a little endian or big endian machine." Merged from svn/trunk using : svn merge -r 10409:10410 http://www.openscenegraph.org/svn/osg/OpenSceneGraph/trunk/include/osg/ --- include/osg/Endian | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/include/osg/Endian b/include/osg/Endian index 7673cdfb3..9476ef13c 100644 --- a/include/osg/Endian +++ b/include/osg/Endian @@ -26,9 +26,14 @@ enum Endian inline Endian getCpuByteOrder() { - static char big_endian_1[2] = { 0, 1 }; + union { + char big_endian_1[2]; + short is_it_really_1; + } u; + u.big_endian_1[0] = 0; + u.big_endian_1[1] = 1; - if ( (*((short*) big_endian_1)) == 1) + if (u.is_it_really_1 == 1) return BigEndian; else return LittleEndian;