From 84e60f58848ba0d928fad541ef58bf34ab13c9e0 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Wed, 10 Nov 2004 21:38:54 +0000 Subject: [PATCH] Fixes to endian handling. --- src/osgDB/Archive.cpp | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/osgDB/Archive.cpp b/src/osgDB/Archive.cpp index 24703f441..1de821144 100644 --- a/src/osgDB/Archive.cpp +++ b/src/osgDB/Archive.cpp @@ -89,6 +89,26 @@ Archive::IndexBlock* Archive::IndexBlock::read(std::istream& in, bool doEndianSw if (indexBlock->_data) { in.read(reinterpret_cast(indexBlock->_data),indexBlock->_blockSize); + + if (doEndianSwap) + { + char* ptr = indexBlock->_data; + char* end_ptr = indexBlock->_data + indexBlock->_offsetOfNextAvailableSpace; + while (ptr(ptr)); + ptr += sizeof(size_type); + + osg::swapBytes(ptr,sizeof(unsigned int)); + unsigned int filename_size = *(reinterpret_cast(ptr)); + ptr += sizeof(unsigned int); + ptr += filename_size; + } + } } else {