From b925de055cde5fe3c6925d81fb0c79476acd88c2 Mon Sep 17 00:00:00 2001 From: kervala Date: Tue, 1 Feb 2011 17:33:30 +0100 Subject: [PATCH] Changed: #1249 Endianness problems while access to disk or memory --- code/nel/src/misc/big_file.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/code/nel/src/misc/big_file.cpp b/code/nel/src/misc/big_file.cpp index e60f8d8a2..7d4e77d6d 100644 --- a/code/nel/src/misc/big_file.cpp +++ b/code/nel/src/misc/big_file.cpp @@ -155,6 +155,10 @@ bool CBigFile::add (const std::string &sBigFileName, uint32 nOptions) return false; } +#ifdef NL_BIG_ENDIAN + NLMISC_BSWAP32(nOffsetFromBeginning); +#endif + if (nlfseek64 (handle.File, nOffsetFromBeginning, SEEK_SET) != 0) { fclose (handle.File); @@ -170,6 +174,11 @@ bool CBigFile::add (const std::string &sBigFileName, uint32 nOptions) handle.File = NULL; return false; } + +#ifdef NL_BIG_ENDIAN + NLMISC_BSWAP32(nNbFile); +#endif + map tempMap; for (uint32 i = 0; i < nNbFile; ++i) { @@ -198,6 +207,10 @@ bool CBigFile::add (const std::string &sBigFileName, uint32 nOptions) return false; } +#ifdef NL_BIG_ENDIAN + NLMISC_BSWAP32(nFileSize2); +#endif + uint32 nFilePos; if (fread (&nFilePos, sizeof(uint32), 1, handle.File) != 1) { @@ -206,6 +219,10 @@ bool CBigFile::add (const std::string &sBigFileName, uint32 nOptions) return false; } +#ifdef NL_BIG_ENDIAN + NLMISC_BSWAP32(nFilePos); +#endif + BNPFile bnpfTmp; bnpfTmp.Pos = nFilePos; bnpfTmp.Size = nFileSize2;