From b1f4a8160621f09b12ab6543b5d6f3e40d3c8644 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Thu, 25 Jun 2009 13:26:26 +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." --- 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;