summaryrefslogtreecommitdiff
path: root/editeng/source/editeng/impedit4.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/source/editeng/impedit4.cxx')
-rw-r--r--editeng/source/editeng/impedit4.cxx56
1 files changed, 30 insertions, 26 deletions
diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx
index d66e1b55d31b..76f0246fdeb0 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -233,7 +233,7 @@ void ImpEditEngine::Write( SvStream& rOutput, EETextFormat eFormat, EditSelectio
sal_uInt32 ImpEditEngine::WriteText( SvStream& rOutput, EditSelection aSel )
{
- sal_uInt16 nStartNode, nEndNode;
+ sal_Int32 nStartNode, nEndNode;
sal_Bool bRange = aSel.HasRange();
if ( bRange )
{
@@ -248,7 +248,7 @@ sal_uInt32 ImpEditEngine::WriteText( SvStream& rOutput, EditSelection aSel )
}
// iterate over the paragraphs ...
- for ( sal_uInt16 nNode = nStartNode; nNode <= nEndNode; nNode++ )
+ for ( sal_Int32 nNode = nStartNode; nNode <= nEndNode; nNode++ )
{
ContentNode* pNode = aEditDoc.GetObject( nNode );
DBG_ASSERT( pNode, "Node not founden: Search&Replace" );
@@ -269,7 +269,7 @@ sal_uInt32 ImpEditEngine::WriteText( SvStream& rOutput, EditSelection aSel )
return rOutput.GetError();
}
-sal_Bool ImpEditEngine::WriteItemListAsRTF( ItemList& rLst, SvStream& rOutput, sal_uInt16 nPara, sal_uInt16 nPos,
+sal_Bool ImpEditEngine::WriteItemListAsRTF( ItemList& rLst, SvStream& rOutput, sal_Int32 nPara, sal_uInt16 nPos,
std::vector<SvxFontItem*>& rFontTable, SvxColorList& rColorList )
{
const SfxPoolItem* pAttrItem = rLst.First();
@@ -336,7 +336,7 @@ sal_uInt32 ImpEditEngine::WriteRTF( SvStream& rOutput, EditSelection aSel )
if ( !IsFormatted() )
FormatDoc();
- sal_uInt16 nStartNode, nEndNode;
+ sal_Int32 nStartNode, nEndNode;
aSel.Adjust( aEditDoc );
nStartNode = aEditDoc.GetPos( aSel.Min().GetNode() );
@@ -540,7 +540,7 @@ sal_uInt32 ImpEditEngine::WriteRTF( SvStream& rOutput, EditSelection aSel )
// iterate over the paragraphs ...
rOutput << '{' << endl;
- for ( sal_uInt16 nNode = nStartNode; nNode <= nEndNode; nNode++ )
+ for ( sal_Int32 nNode = nStartNode; nNode <= nEndNode; nNode++ )
{
ContentNode* pNode = aEditDoc.GetObject( nNode );
DBG_ASSERT( pNode, "Node not found: Search&Replace" );
@@ -699,7 +699,7 @@ sal_uInt32 ImpEditEngine::WriteRTF( SvStream& rOutput, EditSelection aSel )
}
-void ImpEditEngine::WriteItemAsRTF( const SfxPoolItem& rItem, SvStream& rOutput, sal_uInt16 nPara, sal_uInt16 nPos,
+void ImpEditEngine::WriteItemAsRTF( const SfxPoolItem& rItem, SvStream& rOutput, sal_Int32 nPara, sal_uInt16 nPos,
std::vector<SvxFontItem*>& rFontTable, SvxColorList& rColorList )
{
sal_uInt16 nWhich = rItem.Which();
@@ -1029,7 +1029,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
if ( pTxtObj->IsOwnerOfPool() )
pTxtObj->GetPool()->SetDefaultMetric( (SfxMapUnit) eMapUnit );
- sal_uInt16 nStartNode, nEndNode;
+ sal_Int32 nStartNode, nEndNode;
sal_uInt32 nTextPortions = 0;
aSel.Adjust( aEditDoc );
@@ -1045,7 +1045,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
pTxtObj->SetScriptType( GetScriptType( aSel ) );
// iterate over the paragraphs ...
- sal_uInt16 nNode;
+ sal_Int32 nNode;
for ( nNode = nStartNode; nNode <= nEndNode; nNode++ )
{
ContentNode* pNode = aEditDoc.GetObject( nNode );
@@ -1230,10 +1230,14 @@ EditSelection ImpEditEngine::InsertBinTextObject( BinTextObject& rTextObject, Ed
bConvertItems = sal_True;
}
- size_t nContents = rTextObject.GetContents().size();
- sal_uInt16 nPara = aEditDoc.GetPos( aPaM.GetNode() );
+ // Before, paragraph count was of type sal_uInt16 so if nContents exceeded
+ // 0xFFFF this wouldn't had worked anyway, given that nPara is used to
+ // number paragraphs and is fearlessly incremented.
+ sal_Int32 nContents = static_cast<sal_Int32>(rTextObject.GetContents().size());
+ SAL_WARN_IF( nContents < 0, "editeng", "ImpEditEngine::InsertTextObject - contents overflow " << nContents);
+ sal_Int32 nPara = aEditDoc.GetPos( aPaM.GetNode() );
- for (size_t n = 0; n < nContents; ++n, ++nPara)
+ for (sal_Int32 n = 0; n < nContents; ++n, ++nPara)
{
ContentInfo* pC = &rTextObject.GetContents()[n];
sal_Bool bNewContent = aPaM.GetNode()->Len() ? sal_False: sal_True;
@@ -1483,8 +1487,8 @@ sal_Bool ImpEditEngine::HasConvertibleTextPortion( LanguageType nSrcLang )
{
sal_Bool bHasConvTxt = sal_False;
- sal_uInt16 nParas = pEditEngine->GetParagraphCount();
- for (sal_uInt16 k = 0; k < nParas; ++k)
+ sal_Int32 nParas = pEditEngine->GetParagraphCount();
+ for (sal_Int32 k = 0; k < nParas; ++k)
{
std::vector<sal_uInt16> aPortions;
pEditEngine->GetPortions( k, aPortions );
@@ -1661,7 +1665,7 @@ void ImpEditEngine::ImpConvert( rtl::OUString &rConvTxt, LanguageType &rConvTxtL
if (bAllowImplicitChangesForNotConvertibleText &&
!pEditEngine->GetText( pConvInfo->aConvContinue.nPara ).Len())
{
- sal_uInt16 nPara = pConvInfo->aConvContinue.nPara;
+ sal_Int32 nPara = pConvInfo->aConvContinue.nPara;
ESelection aESel( nPara, 0, nPara, 0 );
// see comment for below same function call
SetLanguageAndFont( aESel,
@@ -1679,7 +1683,7 @@ void ImpEditEngine::ImpConvert( rtl::OUString &rConvTxt, LanguageType &rConvTxtL
sal_uInt16 nCurPos = USHRT_MAX;
EPaM aCurStart = CreateEPaM( aCurSel.Min() );
std::vector<sal_uInt16> aPortions;
- pEditEngine->GetPortions( (sal_uInt16)aCurStart.nPara, aPortions );
+ pEditEngine->GetPortions( aCurStart.nPara, aPortions );
for ( size_t nPos = 0; nPos < aPortions.size(); ++nPos )
{
sal_uInt16 nEnd = aPortions[ nPos ];
@@ -2238,10 +2242,10 @@ void ImpEditEngine::DoOnlineSpelling( ContentNode* pThisNodeOnly, sal_Bool bSpel
sal_Bool bRestartTimer = sal_False;
ContentNode* pLastNode = aEditDoc.GetObject( aEditDoc.Count() - 1 );
- sal_uInt16 nNodes = GetEditDoc().Count();
- sal_uInt16 nInvalids = 0;
+ sal_Int32 nNodes = GetEditDoc().Count();
+ sal_Int32 nInvalids = 0;
Sequence< PropertyValue > aEmptySeq;
- for ( sal_uInt16 n = 0; n < nNodes; n++ )
+ for ( sal_Int32 n = 0; n < nNodes; n++ )
{
ContentNode* pNode = GetEditDoc().GetObject( n );
if ( pThisNodeOnly )
@@ -2580,8 +2584,8 @@ sal_Bool ImpEditEngine::ImpSearch( const SvxSearchItem& rSearchItem,
sal_Bool bBack = rSearchItem.GetBackward();
sal_Bool bSearchInSelection = rSearchItem.GetSelection();
- sal_uInt16 nStartNode = aEditDoc.GetPos( rStartPos.GetNode() );
- sal_uInt16 nEndNode;
+ sal_Int32 nStartNode = aEditDoc.GetPos( rStartPos.GetNode() );
+ sal_Int32 nEndNode;
if ( bSearchInSelection )
{
nEndNode = aEditDoc.GetPos( bBack ? rSearchSelection.Min().GetNode() : rSearchSelection.Max().GetNode() );
@@ -2594,12 +2598,12 @@ sal_Bool ImpEditEngine::ImpSearch( const SvxSearchItem& rSearchItem,
utl::TextSearch aSearcher( aSearchOptions );
// iterate over the paragraphs ...
- for ( sal_uInt16 nNode = nStartNode;
+ for ( sal_Int32 nNode = nStartNode;
bBack ? ( nNode >= nEndNode ) : ( nNode <= nEndNode) ;
bBack ? nNode-- : nNode++ )
{
// For backwards-search if nEndNode = 0:
- if ( nNode >= 0xFFFF )
+ if ( nNode < 0 )
return sal_False;
ContentNode* pNode = aEditDoc.GetObject( nNode );
@@ -2689,8 +2693,8 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection,
EditSelection aNewSel( aSel );
- const sal_uInt16 nStartNode = aEditDoc.GetPos( aSel.Min().GetNode() );
- const sal_uInt16 nEndNode = aEditDoc.GetPos( aSel.Max().GetNode() );
+ const sal_Int32 nStartNode = aEditDoc.GetPos( aSel.Min().GetNode() );
+ const sal_Int32 nEndNode = aEditDoc.GetPos( aSel.Max().GetNode() );
sal_Bool bChanges = sal_False;
sal_Bool bLenChanged = sal_False;
@@ -2699,7 +2703,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection,
utl::TransliterationWrapper aTranslitarationWrapper( ::comphelper::getProcessComponentContext(), nTransliterationMode );
sal_Bool bConsiderLanguage = aTranslitarationWrapper.needLanguageForTheMode();
- for ( sal_uInt16 nNode = nStartNode; nNode <= nEndNode; nNode++ )
+ for ( sal_Int32 nNode = nStartNode; nNode <= nEndNode; nNode++ )
{
ContentNode* pNode = aEditDoc.GetObject( nNode );
const XubString& aNodeStr = pNode->GetString();
@@ -2965,7 +2969,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection,
if (aSel.Max().GetNode() == rData.aSelection.Max().GetNode())
aNewSel.Max().GetIndex() = aNewSel.Max().GetIndex() + nDiffs;
- sal_uInt16 nSelNode = aEditDoc.GetPos( rData.aSelection.Min().GetNode() );
+ sal_Int32 nSelNode = aEditDoc.GetPos( rData.aSelection.Min().GetNode() );
ParaPortion* pParaPortion = GetParaPortions()[nSelNode];
pParaPortion->MarkSelectionInvalid( rData.nStart,
std::max< sal_uInt16 >( rData.nStart + rData.nLen,