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 {