summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-08-23 15:25:22 +0200
committerBjoern Michaelsen <bjoern.michaelsen@canonical.com>2011-08-23 15:25:22 +0200
commit05eb1b0dd81e8ef88736b3119ec9b83962a4f08b (patch)
tree01c106c7a418afd497ac5bfc2bc59268e48445de
parent002c16ce95fa6e384e7541b6e656b9058dd9b459 (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.cxx2
-rw-r--r--sw/source/filter/ww8/ww8par2.cxx24
-rw-r--r--sw/source/filter/ww8/ww8par3.cxx21
-rw-r--r--sw/source/filter/ww8/ww8scan.cxx67
-rw-r--r--sw/source/filter/ww8/ww8scan.hxx5
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
};