summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--instsetoo_native/util/openoffice.lst26
-rw-r--r--sc/source/ui/view/cellsh4.cxx1
-rw-r--r--solenv/inc/minor.mk4
-rw-r--r--svtools/source/filter.vcl/wmf/enhwmf.cxx35
-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
-rw-r--r--tools/source/ref/globname.cxx4
10 files changed, 101 insertions, 88 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/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 )
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
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/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
};
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;
}