connectivity/source/drivers/dbase/DIndex.cxx | 32 ++++ connectivity/source/drivers/dbase/DIndexes.cxx | 2 connectivity/source/drivers/dbase/DTable.cxx | 11 + connectivity/source/inc/dbase/DIndex.hxx | 2 filter/source/graphicfilter/itga/itga.cxx | 11 + filter/source/msfilter/svdfppt.cxx | 1 include/filter/msfilter/svdfppt.hxx | 4 lotuswordpro/source/filter/lwpsdwfileloader.cxx | 2 lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx | 26 +-- sc/source/filter/starcalc/scflt.cxx | 14 + vcl/source/filter/sgfbram.cxx | 130 +++++++----------- vcl/source/filter/sgvmain.cxx | 26 +-- 12 files changed, 144 insertions(+), 117 deletions(-)
New commits: commit 1bf3cafd4cd6c3133adaad764e4f216a5d0ead1c Author: Michael Stahl <mst...@redhat.com> Date: Mon Jun 6 13:56:43 2016 +0200 sc: StarCalc/DOS import: fix an endian issue Change-Id: I0f76661d1aec104ee7e22a8abd5f734553796c33 diff --git a/sc/source/filter/starcalc/scflt.cxx b/sc/source/filter/starcalc/scflt.cxx index 0d7f37c..44088e3 100644 --- a/sc/source/filter/starcalc/scflt.cxx +++ b/sc/source/filter/starcalc/scflt.cxx @@ -1021,7 +1021,19 @@ void Sc10Import::LoadFileInfo() void Sc10Import::LoadEditStateInfo() { Sc10EditStateInfo EditStateInfo; - rStream.Read(&EditStateInfo, sizeof(EditStateInfo)); + + sal_uInt64 const nOldPos(rStream.Tell()); + + rStream.ReadUInt16(EditStateInfo.CarretX); + rStream.ReadUInt16(EditStateInfo.CarretY); + rStream.ReadUInt16(EditStateInfo.CarretZ); + rStream.ReadUInt16(EditStateInfo.DeltaX); + rStream.ReadUInt16(EditStateInfo.DeltaY); + rStream.ReadUInt16(EditStateInfo.DeltaZ); + rStream.ReadUChar(EditStateInfo.DataBaseMode); + rStream.Read(EditStateInfo.Reserved, sizeof(EditStateInfo.Reserved)); + + assert(rStream.GetError() || rStream.Tell() == nOldPos + sizeof(Sc10EditStateInfo)); nError = rStream.GetError(); nShowTab = static_cast<SCTAB>(EditStateInfo.DeltaZ); commit da4f7d5d76e054627b61521657d40141b9728e15 Author: Michael Stahl <mst...@redhat.com> Date: Fri Jun 3 23:50:14 2016 +0200 filter: "tga" import: fix some endian issues in ImplReadPalette Change-Id: Ia8ec7b7e19cf9b6b19497cbd77ae5a4e2fdccee7 diff --git a/filter/source/graphicfilter/itga/itga.cxx b/filter/source/graphicfilter/itga/itga.cxx index 20a9006..6bf858c 100644 --- a/filter/source/graphicfilter/itga/itga.cxx +++ b/filter/source/graphicfilter/itga/itga.cxx @@ -734,14 +734,21 @@ bool TGAReader::ImplReadPalette() break; case 32 : - m_rTGA.Read( mpColorMap, 4 * nColors ); + for (sal_uInt16 i = 0; i < nColors; i++) + { + m_rTGA.ReadUInt32(mpColorMap[i]); + } break; case 24 : { for ( sal_uLong i = 0; i < nColors; i++ ) { - m_rTGA.Read( &mpColorMap[ i ], 3 ); + sal_uInt8 nBlue; + sal_uInt8 nGreen; + sal_uInt8 nRed; + m_rTGA.ReadUChar(nBlue).ReadUChar(nGreen).ReadUChar(nRed); + mpColorMap[i] = (nRed << 16) | (nGreen << 8) | nBlue; } } break; commit 3e9aa8b2b29f5222d93ace0e02207fe3bd7d853f Author: Michael Stahl <mst...@redhat.com> Date: Fri Jun 3 23:28:10 2016 +0200 lotuswordpro: fix some endian issues Change-Id: I224c2d894071d6ec7d0afd5e2780a42b842aa32e diff --git a/lotuswordpro/source/filter/lwpsdwfileloader.cxx b/lotuswordpro/source/filter/lwpsdwfileloader.cxx index b30097a..ac2687a 100644 --- a/lotuswordpro/source/filter/lwpsdwfileloader.cxx +++ b/lotuswordpro/source/filter/lwpsdwfileloader.cxx @@ -84,7 +84,7 @@ void LwpSdwFileLoader::CreateDrawObjects(std::vector< rtl::Reference<XFFrame> >* if (BinSignature[0] == 'S' && BinSignature[1] == 'M') { unsigned short nVersion; - m_pStream->Read(&nVersion,2); + m_pStream->ReadUInt16(nVersion); m_pStream->Seek(0); if (nVersion<0x0102) diff --git a/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx b/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx index de653c5..6d134a0 100644 --- a/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx +++ b/lotuswordpro/source/filter/lwpsdwgrouploaderv0102.cxx @@ -106,7 +106,7 @@ void LwpSdwGroupLoaderV0102::BeginDrawObjects(std::vector< rtl::Reference<XFFram } //version unsigned short nVersion; - m_pStream->Read(&nVersion,2); + m_pStream->ReadUInt16(nVersion); if (nVersion<0x0102) { assert(false); @@ -116,15 +116,15 @@ void LwpSdwGroupLoaderV0102::BeginDrawObjects(std::vector< rtl::Reference<XFFram m_pStream->SeekRel(4); //record count unsigned short nRecCount; - m_pStream->Read(&nRecCount,2); + m_pStream->ReadUInt16(nRecCount); // selCount m_pStream->SeekRel(2); //boundrect unsigned short left,top,right,bottom; - m_pStream->Read(&left,2); - m_pStream->Read(&top,2); - m_pStream->Read(&right,2); - m_pStream->Read(&bottom,2); + m_pStream->ReadUInt16(left); + m_pStream->ReadUInt16(top); + m_pStream->ReadUInt16(right); + m_pStream->ReadUInt16(bottom); // fileSize m_pStream->SeekRel(2); @@ -251,7 +251,7 @@ XFDrawGroup* LwpSdwGroupLoaderV0102::CreateDrawGroupObject() } //version unsigned short nVersion; - m_pStream->Read(&nVersion,2); + m_pStream->ReadUInt16(nVersion); if (nVersion<0x0102) { assert(false); @@ -261,15 +261,15 @@ XFDrawGroup* LwpSdwGroupLoaderV0102::CreateDrawGroupObject() m_pStream->SeekRel(4); //record count unsigned short nRecCount; - m_pStream->Read(&nRecCount,2); + m_pStream->ReadUInt16(nRecCount); // selCount m_pStream->SeekRel(2); //boundrect unsigned short left,top,right,bottom; - m_pStream->Read(&left,2); - m_pStream->Read(&top,2); - m_pStream->Read(&right,2); - m_pStream->Read(&bottom,2); + m_pStream->ReadUInt16(left); + m_pStream->ReadUInt16(top); + m_pStream->ReadUInt16(right); + m_pStream->ReadUInt16(bottom); // fileSize m_pStream->SeekRel(2); @@ -304,7 +304,7 @@ XFFrame* LwpSdwGroupLoaderV0102::CreateDrawObject() { //record type unsigned char recType; - m_pStream->Read(&recType,1); + m_pStream->ReadUChar(recType); LwpDrawObj* pDrawObj = nullptr; XFFrame* pRetObjct = nullptr; commit 4849f342b6969abb777d91a1fa77ec120f861c48 Author: Michael Stahl <mst...@redhat.com> Date: Fri Jun 3 22:53:20 2016 +0200 connectivity: DBase: fix some obvious endian issues These calls to SvStream::Read/Write operate on structs that contain 32-bit integers. Change-Id: I2d45128ad482013cd9ef1fca0dd259dfc09c904f diff --git a/connectivity/source/drivers/dbase/DIndex.cxx b/connectivity/source/drivers/dbase/DIndex.cxx index a2e8e3e9..0a6e225 100644 --- a/connectivity/source/drivers/dbase/DIndex.cxx +++ b/connectivity/source/drivers/dbase/DIndex.cxx @@ -349,11 +349,27 @@ ONDXPage* ODbaseIndex::CreatePage(sal_uInt32 nPagePos, ONDXPage* pParent, bool b return pPage; } +void connectivity::dbase::ReadHeader( + SvStream & rStream, ODbaseIndex::NDXHeader & rHeader) +{ + sal_uInt64 const nOldPos(rStream.Tell()); + rStream.ReadUInt32(rHeader.db_rootpage); + rStream.ReadUInt32(rHeader.db_pagecount); + rStream.Read(&rHeader.db_frei, 4); + rStream.ReadUInt16(rHeader.db_keylen); + rStream.ReadUInt16(rHeader.db_maxkeys); + rStream.ReadUInt16(rHeader.db_keytype); + rStream.ReadUInt16(rHeader.db_keyrec); + rStream.Read(&rHeader.db_frei1, 3); + rStream.ReadUChar(rHeader.db_unique); + rStream.Read(&rHeader.db_name, 488); + assert(rStream.GetError() || rStream.Tell() == nOldPos + DINDEX_PAGE_SIZE); +} SvStream& connectivity::dbase::operator >> (SvStream &rStream, ODbaseIndex& rIndex) { rStream.Seek(0); - rStream.Read(&rIndex.m_aHeader,DINDEX_PAGE_SIZE); + ReadHeader(rStream, rIndex.m_aHeader); rIndex.m_nRootPage = rIndex.m_aHeader.db_rootpage; rIndex.m_nPageCount = rIndex.m_aHeader.db_pagecount; @@ -363,7 +379,19 @@ SvStream& connectivity::dbase::operator >> (SvStream &rStream, ODbaseIndex& rInd SvStream& connectivity::dbase::WriteODbaseIndex(SvStream &rStream, ODbaseIndex& rIndex) { rStream.Seek(0); - OSL_VERIFY( rStream.Write(&rIndex.m_aHeader,DINDEX_PAGE_SIZE) == DINDEX_PAGE_SIZE ); + sal_uInt64 const nOldPos(rStream.Tell()); + rStream.WriteUInt32(rIndex.m_aHeader.db_rootpage); + rStream.WriteUInt32(rIndex.m_aHeader.db_pagecount); + rStream.Write(&rIndex.m_aHeader.db_frei, 4); + rStream.WriteUInt16(rIndex.m_aHeader.db_keylen); + rStream.WriteUInt16(rIndex.m_aHeader.db_maxkeys); + rStream.WriteUInt16(rIndex.m_aHeader.db_keytype); + rStream.WriteUInt16(rIndex.m_aHeader.db_keyrec); + rStream.Write(&rIndex.m_aHeader.db_frei1, 3); + rStream.WriteUChar(rIndex.m_aHeader.db_unique); + rStream.Write(&rIndex.m_aHeader.db_name, 488); + assert(rStream.GetError() || rStream.Tell() == nOldPos + DINDEX_PAGE_SIZE); + SAL_WARN_IF(rStream.GetError(), "connectivity.dbase", "write error"); return rStream; } diff --git a/connectivity/source/drivers/dbase/DIndexes.cxx b/connectivity/source/drivers/dbase/DIndexes.cxx index 939fd8a..34e98ec 100644 --- a/connectivity/source/drivers/dbase/DIndexes.cxx +++ b/connectivity/source/drivers/dbase/DIndexes.cxx @@ -60,7 +60,7 @@ sdbcx::ObjectType ODbaseIndexes::createObject(const OUString& _rName) ODbaseIndex::NDXHeader aHeader; pFileStream->Seek(0); - pFileStream->Read(&aHeader,DINDEX_PAGE_SIZE); + ReadHeader(*pFileStream, aHeader); delete pFileStream; ODbaseIndex* pIndex = new ODbaseIndex(m_pTable,aHeader,_rName); diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx index e3d518c..95c65ca 100644 --- a/connectivity/source/drivers/dbase/DTable.cxx +++ b/connectivity/source/drivers/dbase/DTable.cxx @@ -323,8 +323,15 @@ void ODbaseTable::fillColumns() for (; i < nFieldCount; i++) { DBFColumn aDBFColumn; - sal_Size nRead = m_pFileStream->Read(&aDBFColumn, sizeof(aDBFColumn)); - if (nRead != sizeof(aDBFColumn)) + sal_uInt64 const nOldPos(m_pFileStream->Tell()); + m_pFileStream->Read(aDBFColumn.db_fnm, 11); + m_pFileStream->ReadUChar(aDBFColumn.db_typ); + m_pFileStream->ReadUInt32(aDBFColumn.db_adr); + m_pFileStream->ReadUChar(aDBFColumn.db_flng); + m_pFileStream->ReadUChar(aDBFColumn.db_dez); + m_pFileStream->Read(aDBFColumn.db_frei2, 14); + assert(m_pFileStream->GetError() || m_pFileStream->Tell() == nOldPos + sizeof(aDBFColumn)); + if (m_pFileStream->GetError()) { SAL_WARN("connectivity.drivers", "ODbaseTable::fillColumns: short read!"); break; diff --git a/connectivity/source/inc/dbase/DIndex.hxx b/connectivity/source/inc/dbase/DIndex.hxx index 3b51c11..b7f40ff 100644 --- a/connectivity/source/inc/dbase/DIndex.hxx +++ b/connectivity/source/inc/dbase/DIndex.hxx @@ -139,6 +139,8 @@ namespace connectivity SvStream& WriteODbaseIndex(SvStream &rStream, ODbaseIndex&); SvStream& operator >> (SvStream &rStream, ODbaseIndex&); + + void ReadHeader(SvStream & rStream, ODbaseIndex::NDXHeader & rHeader); } } commit 6325cdb735effc5c9ff85819b20aec4271158519 Author: Michael Stahl <mst...@redhat.com> Date: Fri Jun 3 22:00:12 2016 +0200 filter: PPT import: PptPlaceholder is 1 byte large The array of 8 bytes corresponds to 8 enum values and is read directly in ReadPptSlideLayoutAto(); this was wrongly converted to enum. (regression from e5a03da8eb02c333502d6b427625e7bf554ff203) Change-Id: I5757e06459467b3c84c4a404493fa3be23e4e9a0 diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx index 9c27674..3b5670f 100644 --- a/filter/source/msfilter/svdfppt.cxx +++ b/filter/source/msfilter/svdfppt.cxx @@ -309,6 +309,7 @@ SvStream& ReadPptSlideLayoutAtom( SvStream& rIn, PptSlideLayoutAtom& rAtom ) sal_Int32 nTmp; rIn.ReadInt32(nTmp); rAtom.eLayout = static_cast<PptSlideLayout>(nTmp); + static_assert(sizeof(rAtom.aPlaceholderId) == 8, "wrong size of serialized array"); rIn.Read( rAtom.aPlaceholderId, 8 ); return rIn; } diff --git a/include/filter/msfilter/svdfppt.hxx b/include/filter/msfilter/svdfppt.hxx index 5efa503..c3c2d38 100644 --- a/include/filter/msfilter/svdfppt.hxx +++ b/include/filter/msfilter/svdfppt.hxx @@ -58,7 +58,7 @@ class PPTTextObj; class DffRecordHeader; class SvxBulletItem; enum class PptSlideLayout; -enum class PptPlaceholder; +enum class PptPlaceholder : sal_uInt8; #define PPT_IMPORTFLAGS_NO_TEXT_ASSERT 1 @@ -1456,7 +1456,7 @@ enum class PptSlideLayout }; // the following table describes the placeholder id's (values from reality followed by values taken from the documentation) -enum class PptPlaceholder +enum class PptPlaceholder : sal_uInt8 { NONE = 0, // 0 None MASTERTITLE = 1, // 1 Master title commit 06a6f3b352d4471892c6516aebf2e948cac329b0 Author: Michael Stahl <mst...@redhat.com> Date: Fri Jun 3 17:43:42 2016 +0200 vcl: "sgf" filter: replace manual byte-swapping with SvStream methods Change-Id: I316744a036f540140c494bd7997ae7c5077913d2 diff --git a/vcl/source/filter/sgfbram.cxx b/vcl/source/filter/sgfbram.cxx index c449afc..98644cd 100644 --- a/vcl/source/filter/sgfbram.cxx +++ b/vcl/source/filter/sgfbram.cxx @@ -35,20 +35,21 @@ SgfHeader::SgfHeader() SvStream& ReadSgfHeader(SvStream& rIStream, SgfHeader& rHead) { - rIStream.Read(&rHead.Magic, SgfHeaderSize); -#if defined OSL_BIGENDIAN - rHead.Magic =OSL_SWAPWORD(rHead.Magic ); - rHead.Version=OSL_SWAPWORD(rHead.Version); - rHead.Typ =OSL_SWAPWORD(rHead.Typ ); - rHead.Xsize =OSL_SWAPWORD(rHead.Xsize ); - rHead.Ysize =OSL_SWAPWORD(rHead.Ysize ); - rHead.Xoffs =OSL_SWAPWORD(rHead.Xoffs ); - rHead.Yoffs =OSL_SWAPWORD(rHead.Yoffs ); - rHead.Planes =OSL_SWAPWORD(rHead.Planes ); - rHead.SwGrCol=OSL_SWAPWORD(rHead.SwGrCol); - rHead.OfsLo =OSL_SWAPWORD(rHead.OfsLo ); - rHead.OfsHi =OSL_SWAPWORD(rHead.OfsHi ); -#endif + sal_uInt64 const nOldPos(rIStream.Tell()); + rIStream.ReadUInt16(rHead.Magic); + rIStream.ReadUInt16(rHead.Version); + rIStream.ReadUInt16(rHead.Typ); + rIStream.ReadUInt16(rHead.Xsize); + rIStream.ReadUInt16(rHead.Ysize); + rIStream.ReadInt16(rHead.Xoffs); + rIStream.ReadInt16(rHead.Yoffs); + rIStream.ReadUInt16(rHead.Planes); + rIStream.ReadUInt16(rHead.SwGrCol); + rIStream.Read(&rHead.Autor, 10); + rIStream.Read(&rHead.Programm, 10); + rIStream.ReadUInt16(rHead.OfsLo); + rIStream.ReadUInt16(rHead.OfsHi); + assert(rIStream.GetError() || rIStream.Tell() == nOldPos + SgfHeaderSize); return rIStream; } @@ -65,15 +66,15 @@ SgfEntry::SgfEntry() SvStream& ReadSgfEntry(SvStream& rIStream, SgfEntry& rEntr) { - rIStream.Read(&rEntr.Typ, SgfEntrySize); -#if defined OSL_BIGENDIAN - rEntr.Typ =OSL_SWAPWORD(rEntr.Typ ); - rEntr.iFrei=OSL_SWAPWORD(rEntr.iFrei); - rEntr.lFreiLo=OSL_SWAPWORD (rEntr.lFreiLo); - rEntr.lFreiHi=OSL_SWAPWORD (rEntr.lFreiHi); - rEntr.OfsLo=OSL_SWAPWORD(rEntr.OfsLo); - rEntr.OfsHi=OSL_SWAPWORD(rEntr.OfsHi); -#endif + sal_uInt64 const nOldPos(rIStream.Tell()); + rIStream.ReadUInt16(rEntr.Typ); + rIStream.ReadUInt16(rEntr.iFrei); + rIStream.ReadUInt16(rEntr.lFreiLo); + rIStream.ReadUInt16(rEntr.lFreiHi); + rIStream.Read(&rEntr.cFrei, 10); + rIStream.ReadUInt16(rEntr.OfsLo); + rIStream.ReadUInt16(rEntr.OfsHi); + assert(rIStream.GetError() || rIStream.Tell() == nOldPos + SgfEntrySize); return rIStream; } @@ -82,38 +83,27 @@ sal_uInt32 SgfEntry::GetOffset() SvStream& ReadSgfVector(SvStream& rIStream, SgfVector& rVect) { - rIStream.Read(&rVect, sizeof(rVect)); -#if defined OSL_BIGENDIAN - rVect.Flag =OSL_SWAPWORD(rVect.Flag ); - rVect.x =OSL_SWAPWORD(rVect.x ); - rVect.y =OSL_SWAPWORD(rVect.y ); - rVect.OfsLo=OSL_SWAPDWORD (rVect.OfsLo); - rVect.OfsHi=OSL_SWAPDWORD (rVect.OfsHi); -#endif + sal_uInt64 const nOldPos(rIStream.Tell()); + rIStream.ReadUInt16(rVect.Flag); + rIStream.ReadInt16(rVect.x); + rIStream.ReadInt16(rVect.y); + rIStream.ReadUInt16(rVect.OfsLo); + rIStream.ReadUInt16(rVect.OfsHi); + assert(rIStream.GetError() || rIStream.Tell() == nOldPos + SgfVectorSize); return rIStream; } SvStream& WriteBmpFileHeader(SvStream& rOStream, BmpFileHeader& rHead) { -#if defined OSL_BIGENDIAN - rHead.Typ =OSL_SWAPWORD(rHead.Typ ); - rHead.SizeLo =OSL_SWAPWORD(rHead.SizeLo ); - rHead.SizeHi =OSL_SWAPWORD(rHead.SizeHi ); - rHead.Reserve1=OSL_SWAPWORD(rHead.Reserve1); - rHead.Reserve2=OSL_SWAPWORD(rHead.Reserve2); - rHead.OfsLo =OSL_SWAPWORD(rHead.OfsLo ); - rHead.OfsHi =OSL_SWAPWORD(rHead.OfsHi ); -#endif - rOStream.Write(&rHead, sizeof(rHead)); -#if defined OSL_BIGENDIAN - rHead.Typ =OSL_SWAPWORD(rHead.Typ ); - rHead.SizeLo =OSL_SWAPWORD(rHead.SizeLo ); - rHead.SizeHi =OSL_SWAPWORD(rHead.SizeHi ); - rHead.Reserve1=OSL_SWAPWORD(rHead.Reserve1); - rHead.Reserve2=OSL_SWAPWORD(rHead.Reserve2); - rHead.OfsLo =OSL_SWAPWORD(rHead.OfsLo ); - rHead.OfsHi =OSL_SWAPWORD(rHead.OfsHi ); -#endif + sal_uInt64 const nOldPos(rOStream.Tell()); + rOStream.WriteUInt16(rHead.Typ); + rOStream.WriteUInt16(rHead.SizeLo); + rOStream.WriteUInt16(rHead.SizeHi); + rOStream.WriteUInt16(rHead.Reserve1); + rOStream.WriteUInt16(rHead.Reserve2); + rOStream.WriteUInt16(rHead.OfsLo); + rOStream.WriteUInt16(rHead.OfsHi); + assert(rOStream.GetError() || rOStream.Tell() == nOldPos + BmpFileHeaderSize); return rOStream; } @@ -136,33 +126,19 @@ sal_uInt32 BmpFileHeader::GetOfs() SvStream& WriteBmpInfoHeader(SvStream& rOStream, BmpInfoHeader& rInfo) { -#if defined OSL_BIGENDIAN - rInfo.Size =OSL_SWAPDWORD (rInfo.Size ); - rInfo.Width =OSL_SWAPDWORD (rInfo.Width ); - rInfo.Hight =OSL_SWAPDWORD (rInfo.Hight ); - rInfo.Planes =OSL_SWAPWORD(rInfo.Planes ); - rInfo.PixBits =OSL_SWAPWORD(rInfo.PixBits ); - rInfo.Compress=OSL_SWAPDWORD (rInfo.Compress); - rInfo.ImgSize =OSL_SWAPDWORD (rInfo.ImgSize ); - rInfo.xDpmm =OSL_SWAPDWORD (rInfo.xDpmm ); - rInfo.yDpmm =OSL_SWAPDWORD (rInfo.yDpmm ); - rInfo.ColUsed =OSL_SWAPDWORD (rInfo.ColUsed ); - rInfo.ColMust =OSL_SWAPDWORD (rInfo.ColMust ); -#endif - rOStream.Write(&rInfo, sizeof(rInfo)); -#if defined OSL_BIGENDIAN - rInfo.Size =OSL_SWAPDWORD (rInfo.Size ); - rInfo.Width =OSL_SWAPDWORD (rInfo.Width ); - rInfo.Hight =OSL_SWAPDWORD (rInfo.Hight ); - rInfo.Planes =OSL_SWAPWORD(rInfo.Planes ); - rInfo.PixBits =OSL_SWAPWORD(rInfo.PixBits ); - rInfo.Compress=OSL_SWAPDWORD (rInfo.Compress); - rInfo.ImgSize =OSL_SWAPDWORD (rInfo.ImgSize ); - rInfo.xDpmm =OSL_SWAPDWORD (rInfo.xDpmm ); - rInfo.yDpmm =OSL_SWAPDWORD (rInfo.yDpmm ); - rInfo.ColUsed =OSL_SWAPDWORD (rInfo.ColUsed ); - rInfo.ColMust =OSL_SWAPDWORD (rInfo.ColMust ); -#endif + sal_uInt64 const nOldPos(rOStream.Tell()); + rOStream.WriteUInt32(rInfo.Size); + rOStream.WriteInt32(rInfo.Width); + rOStream.WriteInt32(rInfo.Hight); + rOStream.WriteUInt16(rInfo.Planes); + rOStream.WriteUInt16(rInfo.PixBits); + rOStream.WriteUInt32(rInfo.Compress); + rOStream.WriteUInt32(rInfo.ImgSize); + rOStream.WriteInt32(rInfo.xDpmm); + rOStream.WriteInt32(rInfo.yDpmm); + rOStream.WriteUInt32(rInfo.ColUsed); + rOStream.WriteUInt32(rInfo.ColMust); + assert(rOStream.GetError() || rOStream.Tell() == nOldPos + BmpInfoHeaderSize); return rOStream; } commit 86b3215240ad9d008df5870cbf692c6986c3b7a1 Author: Michael Stahl <mst...@redhat.com> Date: Fri Jun 3 16:43:59 2016 +0200 vcl: "sgv" filter: replace more byteswapping with SvStream methods Change-Id: Ibc34bb75a77b0dcba491e2c297b59bfb352ca2ef diff --git a/vcl/source/filter/sgvmain.cxx b/vcl/source/filter/sgvmain.cxx index bdae296..1d85a980 100644 --- a/vcl/source/filter/sgvmain.cxx +++ b/vcl/source/filter/sgvmain.cxx @@ -29,14 +29,6 @@ #include "sgvspln.hxx" #include <unotools/ucbstreamhelper.hxx> -#if defined OSL_BIGENDIAN - -#define SWAPPOINT(p) { \ - p.x=OSL_SWAPWORD(p.x); \ - p.y=OSL_SWAPWORD(p.y); } - -#endif - // Restrictions: // - area patterns are matched to the available ones in Starview. @@ -802,10 +794,11 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut ) ReadPolyType( rInp, aPoly ); if (!rInp.GetError()) { aPoly.EckP=new PointType[aPoly.nPoints]; - rInp.Read(aPoly.EckP, 4*aPoly.nPoints); -#if defined OSL_BIGENDIAN - for(short i=0;i<aPoly.nPoints;i++) SWAPPOINT(aPoly.EckP[i]); -#endif + for (int i = 0; i < aPoly.nPoints; ++i) + { + rInp.ReadInt16(aPoly.EckP[i].x); + rInp.ReadInt16(aPoly.EckP[i].y); + } if (!rInp.GetError()) aPoly.Draw(rOut); delete[] aPoly.EckP; } @@ -815,10 +808,11 @@ void DrawObjkList( SvStream& rInp, OutputDevice& rOut ) ReadSplnType( rInp, aSpln ); if (!rInp.GetError()) { aSpln.EckP=new PointType[aSpln.nPoints]; - rInp.Read(aSpln.EckP, 4*aSpln.nPoints); -#if defined OSL_BIGENDIAN - for(short i=0;i<aSpln.nPoints;i++) SWAPPOINT(aSpln.EckP[i]); -#endif + for (int i = 0; i < aSpln.nPoints; ++i) + { + rInp.ReadInt16(aSpln.EckP[i].x); + rInp.ReadInt16(aSpln.EckP[i].y); + } if (!rInp.GetError()) aSpln.Draw(rOut); delete[] aSpln.EckP; } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits