From 8a54154ee8e22af6b7e08d3a0d7daaa6328709fd Mon Sep 17 00:00:00 2001 From: Petr Mladek Date: Tue, 2 Aug 2011 14:54:59 +0200 Subject: bump product version to 3.3.4-rc1, release number to 401 --- instsetoo_native/util/openoffice.lst | 26 +++++++++++++------------- solenv/inc/minor.mk | 4 ++-- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst index 02950950aaef..1c460640d1fd 100644 --- a/instsetoo_native/util/openoffice.lst +++ b/instsetoo_native/util/openoffice.lst @@ -5,7 +5,7 @@ Globals variables { OOOBASEVERSION 3.3 - OOOPACKAGEVERSION 3.3.3 + OOOPACKAGEVERSION 3.3.4 UREPACKAGEVERSION 1.7.0 URELAYERVERSION 1 BASISROOTNAME LibreOffice @@ -62,7 +62,7 @@ LibreOffice POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 USERDIRPRODUCTVERSION 3 - ABOUTBOXPRODUCTVERSION 3.3.3 + ABOUTBOXPRODUCTVERSION 3.3.4 BASEPRODUCTVERSION 3.3 PCPFILENAME openoffice.pcp UPDATEURL http://update.libreoffice.org/ProductUpdateService/check.Update @@ -74,7 +74,7 @@ LibreOffice FILEFORMATNAME OpenOffice.org FILEFORMATVERSION 1.0 WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} LICENSENAME LGPL SERVICESPROJEKT 1 @@ -131,7 +131,7 @@ LibreOffice_wJRE POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 USERDIRPRODUCTVERSION 3 - ABOUTBOXPRODUCTVERSION 3.3.3 + ABOUTBOXPRODUCTVERSION 3.3.4 BASEPRODUCTVERSION 3.3 UPDATEURL http://update.libreoffice.org/ProductUpdateService/check.Update ODFNOTIFYURL http://odfnotify.libreoffice.org/OOo3.0/notification.jsp?version=ODF @@ -142,7 +142,7 @@ LibreOffice_wJRE FILEFORMATNAME OpenOffice.org FILEFORMATVERSION 1.0 WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} LICENSENAME LGPL SERVICESPROJEKT 1 @@ -198,7 +198,7 @@ LibreOffice_Dev POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 USERDIRPRODUCTVERSION 3 - ABOUTBOXPRODUCTVERSION 3.3.3 + ABOUTBOXPRODUCTVERSION 3.3.4 BASEPRODUCTVERSION 3.3 DEVELOPMENTPRODUCT 1 BASISPACKAGEPREFIX libobasis-dev @@ -213,7 +213,7 @@ LibreOffice_Dev FILEFORMATNAME OpenOffice.org FILEFORMATVERSION 1.0 WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} LICENSENAME LGPL SERVICESPROJEKT 1 @@ -314,7 +314,7 @@ LibreOffice_SDK POSTVERSIONEXTENSION SDK POSTVERSIONEXTENSIONUNIX sdk BRANDPACKAGEVERSION 3 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} PACK_INSTALLED 1 POOLPRODUCT 0 @@ -361,7 +361,7 @@ LibreOffice_Dev_SDK POSTVERSIONEXTENSION SDK POSTVERSIONEXTENSIONUNIX sdk BRANDPACKAGEVERSION 3 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} BASISPACKAGEPREFIX libobasis-dev UREPACKAGEPREFIX lodev @@ -412,7 +412,7 @@ OxygenOffice POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 USERDIRPRODUCTVERSION 3 - ABOUTBOXPRODUCTVERSION 3.3.3 + ABOUTBOXPRODUCTVERSION 3.3.4 BASEPRODUCTVERSION 3.3 PCPFILENAME openoffice.pcp UPDATEURL http://update.libreoffice.org/ProductUpdateService/check.Update @@ -424,7 +424,7 @@ OxygenOffice FILEFORMATNAME OpenOffice.org FILEFORMATVERSION 1.0 WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} LICENSENAME LGPL SERVICESPROJEKT 1 @@ -481,7 +481,7 @@ OxygenOffice_wJRE POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 USERDIRPRODUCTVERSION 3 - ABOUTBOXPRODUCTVERSION 3.3.3 + ABOUTBOXPRODUCTVERSION 3.3.4 BASEPRODUCTVERSION 3.3 UPDATEURL http://update.libreoffice.org/ProductUpdateService/check.Update ODFNOTIFYURL http://odfnotify.libreoffice.org/OOo3.0/notification.jsp?version=ODF @@ -492,7 +492,7 @@ OxygenOffice_wJRE FILEFORMATNAME OpenOffice.org FILEFORMATVERSION 1.0 WRITERCOMPATIBILITYVERSIONOOO11 OpenOffice.org 1.1 - PACKAGEVERSION 3.3.3 + PACKAGEVERSION 3.3.4 PACKAGEREVISION {milestone} LICENSENAME LGPL SERVICESPROJEKT 1 diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk index 7cc93cc3b9cc..460c827c71f7 100644 --- a/solenv/inc/minor.mk +++ b/solenv/inc/minor.mk @@ -1,5 +1,5 @@ RSCVERSION=330 -RSCREVISION=330m19(Build:301) -BUILD=301 +RSCREVISION=330m19(Build:401) +BUILD=401 LAST_MINOR=m19 SOURCEVERSION=OOO330 -- cgit -- cgit From 6e34c18231ffeb7c52af1acf51e42ee120ca2780 Mon Sep 17 00:00:00 2001 From: Bjoern Michaelsen Date: Tue, 23 Aug 2011 15:05:26 +0200 Subject: recreated tag libreoffice-3.3.4.1 which had these commits: commit 807c3f3a3a350d10c7d51c70ee2653de73c94d1c (tag: refs/tags/libreoffice-3.3.4.1) Author: Petr Mladek Date: Tue Aug 2 14:56:30 2011 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version 3.3.4.1, tag libreoffice-3.3.4.1 (3.3.4-rc1) commit da00d21426b1480e47732bd6721b7ac0fccf220b Author: Caolán McNamara Date: Wed Jul 27 10:56:26 2011 +0100 Resolves: fdo#38955 set selection request as done for macro recorder Signed-off-by: Kohei Yoshida sc/source/ui/view/cellsh4.cxx | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) --- sc/source/ui/view/cellsh4.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/sc/source/ui/view/cellsh4.cxx b/sc/source/ui/view/cellsh4.cxx index 894bee330330..5ed77cbaa6f4 100644 --- a/sc/source/ui/view/cellsh4.cxx +++ b/sc/source/ui/view/cellsh4.cxx @@ -275,6 +275,7 @@ void ScCellShell::ExecuteCursorSel( SfxRequest& rReq ) ; } pViewShell->ShowAllCursors(); + rReq.Done(); } void ScCellShell::ExecuteMove( SfxRequest& rReq ) -- cgit From 95bcee57856fb1fa64b9146d312772fe2b0c55f1 Mon Sep 17 00:00:00 2001 From: Bjoern Michaelsen Date: Tue, 23 Aug 2011 15:18:29 +0200 Subject: recreated tag libreoffice-3.3.4.1 which had these commits: commit 7395bd10579c3756281efefcdbac61307c23df94 (tag: refs/tags/libreoffice-3.3.4.1, refs/remotes/origin/libreoffice-3-3) Author: Petr Mladek Date: Tue Aug 2 14:56:33 2011 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version 3.3.4.1, tag libreoffice-3.3.4.1 (3.3.4-rc1) commit a935029385159ee137418730363257599f67e5d6 Author: Radek Doulik Date: Mon Jul 11 20:36:47 2011 +0200 fix regression in SvGlobalName::operator < - it was comparing wrong parts and ommiting part of ID's, resulting in wrong results and thus ::std::map didn't work well with default less compare function of it's keys - fixes fdo#32709 (cherry picked from commit 345dc7961bc142f167a1b8e5f43f4439e8234f06) Signed-off-by: Caolán McNamara tools/source/ref/globname.cxx | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit eba378ee13564125a8b6ee522901d586f9bb78f5 Author: Caolán McNamara Date: Wed Jul 6 13:41:52 2011 +0100 handle busted emf lengths Conflicts: svtools/source/filter.vcl/wmf/enhwmf.cxx svtools/source/filter.vcl/wmf/enhwmf.cxx | 35 ++++++++++++++++++------------ 1 files changed, 21 insertions(+), 14 deletions(-) --- svtools/source/filter.vcl/wmf/enhwmf.cxx | 35 +++++++++++++++++++------------- tools/source/ref/globname.cxx | 4 ++-- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/svtools/source/filter.vcl/wmf/enhwmf.cxx b/svtools/source/filter.vcl/wmf/enhwmf.cxx index 1dd5c64ce11e..2406de9ff167 100644 --- a/svtools/source/filter.vcl/wmf/enhwmf.cxx +++ b/svtools/source/filter.vcl/wmf/enhwmf.cxx @@ -261,22 +261,27 @@ void EnhWMFReader::ReadEMFPlusComment(sal_uInt32 length, sal_Bool& bHaveDC) } bEMFPlus = true; + sal_Size pos = pWMF->Tell(); void *buffer = malloc( length ); - - int pos = pWMF->Tell(); pOut->PassEMFPlus( buffer, pWMF->Read( buffer, length ) ); + free( buffer ); pWMF->Seek( pos ); bHaveDC = false; - length -= 4; + OSL_ASSERT(length >= 4); + //reduce by 32bit length itself, skip in SeekRel if + //impossibly unavailble + sal_uInt32 nRemainder = length >= 4 ? length-4 : length; - while (length > 0) { - UINT16 type, flags; - UINT32 size, dataSize; - sal_uInt32 next; + const size_t nRequiredHeaderSize = 12; + while (nRemainder > nRequiredHeaderSize) + { + sal_uInt16 type(0), flags(0); + sal_uInt32 size(0), dataSize(0); *pWMF >> type >> flags >> size >> dataSize; + nRemainder -= nRequiredHeaderSize; EMFP_DEBUG(printf ("\t\tEMF+ record type: %d\n", type)); @@ -286,14 +291,16 @@ void EnhWMFReader::ReadEMFPlusComment(sal_uInt32 length, sal_Bool& bHaveDC) EMFP_DEBUG(printf ("\t\tEMF+ lock DC (device context)\n", type)); } - next = pWMF->Tell() + ( size - 12 ); - - length -= size; - - pWMF->Seek( next ); + //Get the length of the remaining data of this record based + //on the alleged size + sal_uInt32 nRemainingRecordData = size >= nRequiredHeaderSize ? + size-nRequiredHeaderSize : 0; + //clip to available size + nRemainingRecordData = std::min(nRemainingRecordData, nRemainder); + pWMF->SeekRel(nRemainingRecordData); + nRemainder -= nRemainingRecordData; } - - free( buffer ); + pWMF->SeekRel(nRemainder); } void EnhWMFReader::ReadGDIComment() diff --git a/tools/source/ref/globname.cxx b/tools/source/ref/globname.cxx index 7a7f5c56c738..c78aeb57f62f 100644 --- a/tools/source/ref/globname.cxx +++ b/tools/source/ref/globname.cxx @@ -208,10 +208,10 @@ BOOL SvGlobalName::operator < ( const SvGlobalName & rObj ) const else if( Data2_a == Data2_b ) { sal_uInt32 Data1_a; - memcpy(&Data1_a, pImp->szData+4, sizeof(sal_uInt32)); + memcpy(&Data1_a, pImp->szData, sizeof(sal_uInt32)); sal_uInt32 Data1_b; - memcpy(&Data1_b, rObj.pImp->szData+4, sizeof(sal_uInt32)); + memcpy(&Data1_b, rObj.pImp->szData, sizeof(sal_uInt32)); return Data1_a < Data1_b; } -- cgit From 05eb1b0dd81e8ef88736b3119ec9b83962a4f08b Mon Sep 17 00:00:00 2001 From: Bjoern Michaelsen Date: Tue, 23 Aug 2011 15:25:22 +0200 Subject: recreated tag libreoffice-3.3.4.1 which had these commits: commit 109ecc343daa76030ec57ecf2af91631dc40818e (tag: refs/tags/libreoffice-3.3.4.1, refs/remotes/origin/libreoffice-3-3) Author: Petr Mladek Date: Tue Aug 2 14:56:34 2011 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version 3.3.4.1, tag libreoffice-3.3.4.1 (3.3.4-rc1) commit affd275c4546aea23cd9a752f761b34a7bf49061 Author: Luboš Luňák Date: Tue Jul 26 22:20:57 2011 +0200 fix backport sw/source/filter/ww8/ww8par2.cxx | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 48d9ab395df1b005d9595908317c843cdc007683 Author: Caolán McNamara Date: Sun Jun 19 22:09:17 2011 +0100 Resolves: #i118018# fExtChar affects only < 8 (if at all) sw/source/filter/ww8/ww8scan.cxx | 44 +++++++++++++++++++++---------------- 1 files changed, 25 insertions(+), 19 deletions(-) commit c28968f2eae35cae76594fc9ef2434667c26fffe Author: Caolán McNamara Date: Sat Jul 2 01:55:56 2011 +0100 Related: fdo#37057 use standard sprm iterator sw/source/filter/ww8/ww8par2.cxx | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) commit 4477188bd8da6fd3a6fa4b6e2044a5ef81c247e7 Author: Caolán McNamara Date: Fri Jun 17 23:48:50 2011 +0100 merge these sprm finders and do it right sw/source/filter/ww8/ww8par2.cxx | 16 +--------------- sw/source/filter/ww8/ww8par3.cxx | 15 +-------------- sw/source/filter/ww8/ww8scan.cxx | 21 +++++++++++++++++++++ sw/source/filter/ww8/ww8scan.hxx | 5 +++++ 4 files changed, 28 insertions(+), 29 deletions(-) commit 9440761513d7f1af7ba0a70e2afc8b5384af76d7 Author: Caolán McNamara Date: Fri Mar 4 09:14:42 2011 +0000 valgrind: init some values sw/source/filter/ww8/ww8par3.cxx | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 3618ffd1b6bc96beabd041e6eabac04c44286c2b Author: Caolán McNamara Date: Wed Jun 8 14:32:06 2011 +0100 fix loss of init on merge sw/source/filter/ww8/ww8scan.cxx | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit c450ac7031cd7a2146380b6664df24fd9d2b995c Author: Korrawit Pruegsanusak Date: Wed Jun 22 00:30:51 2011 +0700 Fix for fdo#30550, character count without spaces Instantiating aScanner should set bClip to be true. This will make the boundaries correct. Released under LGPLv3+/MPL Signed-off-by: Tor Lillqvist sw/source/core/txtnode/txtedt.cxx | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) --- sw/source/core/txtnode/txtedt.cxx | 2 +- sw/source/filter/ww8/ww8par2.cxx | 24 +++----------- sw/source/filter/ww8/ww8par3.cxx | 21 +++--------- sw/source/filter/ww8/ww8scan.cxx | 67 +++++++++++++++++++++++++++------------ sw/source/filter/ww8/ww8scan.hxx | 5 +++ 5 files changed, 62 insertions(+), 57 deletions(-) diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx index cc03200ad775..a7a2182d4163 100644 --- a/sw/source/core/txtnode/txtedt.cxx +++ b/sw/source/core/txtnode/txtedt.cxx @@ -1908,7 +1908,7 @@ void SwTxtNode::CountWords( SwDocStat& rStat, const String aScannerText( aExpandText ); SwScanner aScanner( *this, aScannerText, 0, pConversionMap, i18n::WordType::WORD_COUNT, - (xub_StrLen)nExpandBegin, (xub_StrLen)nExpandEnd ); + (xub_StrLen)nExpandBegin, (xub_StrLen)nExpandEnd, true ); const rtl::OUString aBreakWord( CH_TXTATR_BREAKWORD ); diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index d5a73b9ac209..93847735f4f4 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -3775,21 +3775,7 @@ const BYTE* WW8RStyle::HasParaSprm( USHORT nId ) const if( !pParaSprms || !nSprmsLen ) return 0; - const BYTE* pSprms = pParaSprms; - USHORT i, x; - - for( i=0; i < nSprmsLen; ) - { - USHORT nAktId = maSprmParser.GetSprmId(pSprms); - // Sprm found ? - if( nAktId == nId ) - return pSprms + maSprmParser.DistanceToData(nId); - - x = maSprmParser.GetSprmSize(nAktId, pSprms); - i = i + x; - pSprms += x; - } - return 0; // Sprm not found + return maSprmParser.findSprmData(nId, pParaSprms, nSprmsLen); } void WW8RStyle::ImportSprms(BYTE *pSprms, short nLen, bool bPap) @@ -3803,11 +3789,11 @@ void WW8RStyle::ImportSprms(BYTE *pSprms, short nLen, bool bPap) nSprmsLen = nLen; } - while ( nLen > 0 ) + WW8SprmIter aSprmIter(pSprms, nLen, maSprmParser); + while (const sal_uInt8* pSprm = aSprmIter.GetSprms()) { - USHORT nL1 = pIo->ImportSprm(pSprms); - nLen = nLen - nL1; - pSprms += nL1; + pIo->ImportSprm(pSprm); + aSprmIter++; } pParaSprms = 0; diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx index ce066fc5bb96..aa285961f011 100644 --- a/sw/source/filter/ww8/ww8par3.cxx +++ b/sw/source/filter/ww8/ww8par3.cxx @@ -471,20 +471,7 @@ SV_IMPL_PTRARR( WW8LFOInfos, WW8LFOInfo_Ptr ); sal_uInt8* WW8ListManager::GrpprlHasSprm(sal_uInt16 nId, sal_uInt8& rSprms, sal_uInt8 nLen) { - sal_uInt8* pSprms = &rSprms; - USHORT i=0; - while (i < nLen) - { - sal_uInt16 nAktId = maSprmParser.GetSprmId(pSprms); - if( nAktId == nId ) // Sprm found - return pSprms + maSprmParser.DistanceToData(nId); - - // gib Zeiger auf Daten - USHORT x = maSprmParser.GetSprmSize(nAktId, pSprms); - i = i + x; - pSprms += x; - } - return 0; // Sprm not found + return maSprmParser.findSprmData(nId, &rSprms, nLen); } class ListWithId : public std::unary_function @@ -525,8 +512,8 @@ bool WW8ListManager::ReadLVL(SwNumFmt& rNumFmt, SfxItemSet*& rpItemSet, std::deque &rNotReallyThere, sal_uInt16 nLevel, ww::bytes &rParaSprms) { - sal_uInt8 aBits1; - sal_uInt16 nStartNo = 0; // Start-Nr. fuer den Writer + sal_uInt8 aBits1(0); + sal_uInt16 nStartNo(0); // Start-Nr. fuer den Writer SvxExtNumType eType; // Writer-Num-Typ SvxAdjust eAdj; // Ausrichtung (Links/rechts/zent.) sal_Unicode cBullet(0x2190); // default safe bullet @@ -560,7 +547,7 @@ bool WW8ListManager::ReadLVL(SwNumFmt& rNumFmt, SfxItemSet*& rpItemSet, if( !bLVLOkB ) return false; - sal_uInt8 ixchFollow; + sal_uInt8 ixchFollow(0); rSt >> ixchFollow; if (ixchFollow == 0) rReader.maTracer.Log(sw::log::eTabInNumbering); diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx index f781e017ea71..4bfba2c34370 100644 --- a/sw/source/filter/ww8/ww8scan.cxx +++ b/sw/source/filter/ww8/ww8scan.cxx @@ -1491,7 +1491,12 @@ WW8_CP WW8ScannerBase::WW8Fc2Cp( WW8_FC nFcPos ) const if( nFcPos == WW8_FC_MAX ) return nFallBackCpEnd; - bool bIsUnicode = false; + bool bIsUnicode; + if (pWw8Fib->nVersion >= 8) + bIsUnicode = false; + else + bIsUnicode = pWw8Fib->fExtChar ? true : false; + if( pPieceIter ) // Complex File ? { ULONG nOldPos = pPieceIter->GetIdx(); @@ -1514,8 +1519,7 @@ WW8_CP WW8ScannerBase::WW8Fc2Cp( WW8_FC nFcPos ) const } else { - if (pWw8Fib->fExtChar) - bIsUnicode=true; + bIsUnicode = pWw8Fib->fExtChar ? true : false; } INT32 nLen = (nCpEnd - nCpStart) * (bIsUnicode ? 2 : 1); @@ -1550,10 +1554,14 @@ WW8_CP WW8ScannerBase::WW8Fc2Cp( WW8_FC nFcPos ) const */ return nFallBackCpEnd; } - // No complex file - if (pWw8Fib->fExtChar) - bIsUnicode=true; - return ((nFcPos - pWw8Fib->fcMin) / (bIsUnicode ? 2 : 1)); + + // No complex file + if (!bIsUnicode) + nFallBackCpEnd = (nFcPos - pWw8Fib->fcMin); + else + nFallBackCpEnd = (nFcPos - pWw8Fib->fcMin + 1) / 2; + + return nFallBackCpEnd; } WW8_FC WW8ScannerBase::WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode, @@ -1568,8 +1576,14 @@ WW8_FC WW8ScannerBase::WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode, if( !pIsUnicode ) pIsUnicode = &bIsUnicode; + if (pWw8Fib->nVersion >= 8) + *pIsUnicode = false; + else + *pIsUnicode = pWw8Fib->fExtChar ? true : false; + if( pPieceIter ) - { // Complex File + { + // Complex File if( pNextPieceCp ) *pNextPieceCp = WW8_CP_MAX; @@ -1597,14 +1611,10 @@ WW8_FC WW8ScannerBase::WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode, *pNextPieceCp = nCpEnd; WW8_FC nRet = SVBT32ToUInt32( ((WW8_PCD*)pData)->fc ); - if (8 > pWw8Fib->nVersion) - if (pWw8Fib->fExtChar) - *pIsUnicode=true; - else - *pIsUnicode = false; - else + if (pWw8Fib->nVersion >= 8) nRet = WW8PLCFx_PCD::TransformPieceAddress( nRet, *pIsUnicode ); - + else + *pIsUnicode = pWw8Fib->fExtChar ? true : false; nRet += (nCpPos - nCpStart) * (*pIsUnicode ? 2 : 1); @@ -1612,10 +1622,6 @@ WW8_FC WW8ScannerBase::WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode, } // No complex file - if (pWw8Fib->fExtChar) - *pIsUnicode = true; - else - *pIsUnicode = false; return pWw8Fib->fcMin + nCpPos * (*pIsUnicode ? 2 : 1); } @@ -2033,7 +2039,7 @@ String WW8ReadPString(SvStream& rStrm, rtl_TextEncoding eEnc, String WW8Read_xstz(SvStream& rStrm, USHORT nChars, bool bAtEndSeekRel1) { - UINT16 b; + UINT16 b(0); if( nChars ) b = nChars; @@ -7374,6 +7380,27 @@ USHORT wwSprmParser::DistanceToData(USHORT nId) const return 1 + mnDelta + SprmDataOfs(nId); } +sal_uInt8* wwSprmParser::findSprmData(sal_uInt16 nId, sal_uInt8* pSprms, + sal_uInt16 nLen) const +{ + while (nLen > (getVersion()?1:0)) + { + sal_uInt16 nAktId = GetSprmId(pSprms); + if (nAktId == nId) // Sprm found + return pSprms + DistanceToData(nId); + + // gib Zeiger auf Daten + sal_uInt16 nSize = GetSprmSize(nAktId, pSprms); + OSL_ENSURE(nSize <= nLen, "sprm longer than remaining bytes"); + //Clip to available size if wrong + nSize = std::min(nSize, nLen); + pSprms += nSize; + nLen -= nSize; + } + // Sprm not found + return 0; +} + SEPr::SEPr() : bkc(2), fTitlePage(0), fAutoPgn(0), nfcPgn(0), fUnlocked(0), cnsPgn(0), fPgnRestart(0), fEndNote(1), lnc(0), grpfIhdt(0), nLnnMod(0), dxaLnn(0), diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx index 7e29e0aefa18..c079e8c26b92 100644 --- a/sw/source/filter/ww8/ww8scan.hxx +++ b/sw/source/filter/ww8/ww8scan.hxx @@ -146,6 +146,11 @@ public: /// The minimum acceptable sprm len possible for this type of parser int MinSprmLen() const { return (IsSevenMinus(meVersion)) ? 2 : 3; } + /// Returns the offset to data of the first sprm of id nId, 0 + // if not found. nLen must be the <= length of pSprms + sal_uInt8* findSprmData(sal_uInt16 nId, sal_uInt8* pSprms, sal_uInt16 nLen) + const; + inline int getVersion() const { return meVersion; } //cmc, I'm dubious about the usage of this, how can it be 0 }; -- cgit