diff options
-rw-r--r-- | instsetoo_native/util/openoffice.lst | 26 | ||||
-rw-r--r-- | sc/source/ui/view/cellsh4.cxx | 1 | ||||
-rw-r--r-- | solenv/inc/minor.mk | 4 | ||||
-rw-r--r-- | svtools/source/filter.vcl/wmf/enhwmf.cxx | 35 | ||||
-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 | ||||
-rw-r--r-- | tools/source/ref/globname.cxx | 4 |
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; } |