diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2011-08-23 15:25:22 +0200 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2011-08-23 15:25:22 +0200 |
commit | 05eb1b0dd81e8ef88736b3119ec9b83962a4f08b (patch) | |
tree | 01c106c7a418afd497ac5bfc2bc59268e48445de | |
parent | 002c16ce95fa6e384e7541b6e656b9058dd9b459 (diff) |
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 <pmladek@suse.cz>
Date: Tue Aug 2 14:56:34 2011 +0200
Version 3.3.4.1, tag libreoffice-3.3.4.1 (3.3.4-rc1)
commit affd275c4546aea23cd9a752f761b34a7bf49061
Author: Luboš Luňák <l.lunak@suse.cz>
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 <caolanm@redhat.com>
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 <caolanm@redhat.com>
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 <caolanm@redhat.com>
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 <caolanm@redhat.com>
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 <caolanm@redhat.com>
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 <detective.conan.1412@gmail.com>
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 <tlillqvist@novell.com>
sw/source/core/txtnode/txtedt.cxx | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
Notes
Notes:
split repo tag: writer_libreoffice-3.3.4.1
-rw-r--r-- | sw/source/core/txtnode/txtedt.cxx | 2 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par2.cxx | 24 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8par3.cxx | 21 | ||||
-rw-r--r-- | sw/source/filter/ww8/ww8scan.cxx | 67 | ||||
-rw-r--r-- | 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<const WW8LSTInfo *, bool> @@ -525,8 +512,8 @@ bool WW8ListManager::ReadLVL(SwNumFmt& rNumFmt, SfxItemSet*& rpItemSet, std::deque<bool> &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 }; |