summaryrefslogtreecommitdiff
path: root/editeng/source/editeng/editobj.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'editeng/source/editeng/editobj.cxx')
-rw-r--r--editeng/source/editeng/editobj.cxx81
1 files changed, 48 insertions, 33 deletions
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx
index 669f003fa607..20561cd7303d 100644
--- a/editeng/source/editeng/editobj.cxx
+++ b/editeng/source/editeng/editobj.cxx
@@ -194,30 +194,30 @@ EditTextObject::~EditTextObject()
DBG_DTOR( EE_EditTextObject, 0 );
}
-size_t EditTextObject::GetParagraphCount() const
+sal_Int32 EditTextObject::GetParagraphCount() const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
return 0;
}
-String EditTextObject::GetText(size_t /* nParagraph */) const
+String EditTextObject::GetText(sal_Int32 /* nParagraph */) const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
return String();
}
-void EditTextObject::Insert(const EditTextObject& /* rObj */, size_t /* nPara */)
+void EditTextObject::Insert(const EditTextObject& /* rObj */, sal_Int32 /* nPara */)
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
-EditTextObject* EditTextObject::CreateTextObject(size_t /*nPara*/, size_t /*nParas*/) const
+EditTextObject* EditTextObject::CreateTextObject(sal_Int32 /*nPara*/, sal_Int32 /*nParas*/) const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
return 0;
}
-void EditTextObject::RemoveParagraph(size_t /*nPara*/)
+void EditTextObject::RemoveParagraph(sal_Int32 /*nPara*/)
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
@@ -245,7 +245,7 @@ sal_Bool EditTextObject::HasCharAttribs( sal_uInt16 ) const
return false;
}
-void EditTextObject::GetCharAttribs( sal_uInt16 /*nPara*/, std::vector<EECharAttrib>& /*rLst*/ ) const
+void EditTextObject::GetCharAttribs( sal_Int32 /*nPara*/, std::vector<EECharAttrib>& /*rLst*/ ) const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
@@ -273,13 +273,13 @@ sal_Bool EditTextObject::HasField( TypeId /*aType*/ ) const
return false;
}
-SfxItemSet EditTextObject::GetParaAttribs(size_t /*nPara*/) const
+SfxItemSet EditTextObject::GetParaAttribs(sal_Int32 /*nPara*/) const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
return SfxItemSet( *(SfxItemPool*)NULL );
}
-void EditTextObject::SetParaAttribs(size_t /*nPara*/, const SfxItemSet& /*rAttribs*/)
+void EditTextObject::SetParaAttribs(sal_Int32 /*nPara*/, const SfxItemSet& /*rAttribs*/)
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
@@ -302,12 +302,12 @@ sal_Bool EditTextObject::HasStyleSheet( const XubString& /*rName*/, SfxStyleFami
return false;
}
-void EditTextObject::GetStyleSheet(size_t /*nPara*/, String& /*rName*/, SfxStyleFamily& /*eFamily*/) const
+void EditTextObject::GetStyleSheet(sal_Int32 /*nPara*/, String& /*rName*/, SfxStyleFamily& /*eFamily*/) const
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
-void EditTextObject::SetStyleSheet(size_t /*nPara*/, const String& /*rName*/, const SfxStyleFamily& /*eFamily*/)
+void EditTextObject::SetStyleSheet(sal_Int32 /*nPara*/, const String& /*rName*/, const SfxStyleFamily& /*eFamily*/)
{
OSL_FAIL( "Virtual method direct from EditTextObject!" );
}
@@ -676,27 +676,33 @@ ContentInfo* BinTextObject::CreateAndInsertContent()
return &aContents.back();
}
-size_t BinTextObject::GetParagraphCount() const
+sal_Int32 BinTextObject::GetParagraphCount() const
{
- return aContents.size();
+ size_t nSize = aContents.size();
+ if (nSize > EE_PARA_MAX_COUNT)
+ {
+ SAL_WARN( "editeng", "EditTextObjectImpl::GetParagraphCount - overflow " << nSize);
+ return EE_PARA_MAX_COUNT;
+ }
+ return static_cast<sal_Int32>(nSize);
}
-String BinTextObject::GetText(size_t nPara) const
+String BinTextObject::GetText(sal_Int32 nPara) const
{
- if (nPara >= aContents.size())
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size())
return String();
return aContents[nPara].GetText();
}
-void BinTextObject::Insert(const EditTextObject& rObj, size_t nDestPara)
+void BinTextObject::Insert(const EditTextObject& rObj, sal_Int32 nDestPara)
{
DBG_ASSERT( rObj.Which() == EE_FORMAT_BIN, "UTO: unknown Textobjekt" );
const BinTextObject& rBinObj = (const BinTextObject&)rObj;
- if (nDestPara > aContents.size())
- nDestPara = aContents.size();
+ if (static_cast<size_t>(nDestPara) > aContents.size())
+ nDestPara = static_cast<sal_Int32>(aContents.size());
const ContentInfosType& rCIs = rBinObj.aContents;
for (size_t i = 0, n = rCIs.size(); i < n; ++i)
@@ -710,9 +716,9 @@ void BinTextObject::Insert(const EditTextObject& rObj, size_t nDestPara)
ClearPortionInfo();
}
-EditTextObject* BinTextObject::CreateTextObject(size_t nPara, size_t nParas) const
+EditTextObject* BinTextObject::CreateTextObject(sal_Int32 nPara, sal_Int32 nParas) const
{
- if (nPara >= aContents.size() || !nParas)
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size() || nParas <= 0)
return NULL;
// Only split the Pool, when a the Pool is set externally.
@@ -734,10 +740,10 @@ EditTextObject* BinTextObject::CreateTextObject(size_t nPara, size_t nParas) con
return pObj;
}
-void BinTextObject::RemoveParagraph(size_t nPara)
+void BinTextObject::RemoveParagraph(sal_Int32 nPara)
{
- DBG_ASSERT( nPara < aContents.size(), "BinTextObject::GetText: Paragraph does not exist!" );
- if (nPara >= aContents.size())
+ DBG_ASSERT( nPara >= 0 && static_cast<size_t>(nPara) < aContents.size(), "BinTextObject::GetText: Paragraph does not exist!" );
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size())
return;
ContentInfosType::iterator it = aContents.begin();
@@ -791,8 +797,11 @@ sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const
return false;
}
-void BinTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
+void BinTextObject::GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const
{
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size())
+ return;
+
rLst.clear();
const ContentInfo& rC = aContents[nPara];
for (size_t nAttr = 0; nAttr < rC.aAttribs.size(); ++nAttr)
@@ -878,14 +887,17 @@ sal_Bool BinTextObject::HasField( TypeId aType ) const
return false;
}
-SfxItemSet BinTextObject::GetParaAttribs(size_t nPara) const
+SfxItemSet BinTextObject::GetParaAttribs(sal_Int32 nPara) const
{
const ContentInfo& rC = aContents[nPara];
return rC.GetParaAttribs();
}
-void BinTextObject::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs)
+void BinTextObject::SetParaAttribs(sal_Int32 nPara, const SfxItemSet& rAttribs)
{
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size())
+ return;
+
ContentInfo& rC = aContents[nPara];
rC.GetParaAttribs().Set(rAttribs);
ClearPortionInfo();
@@ -895,7 +907,7 @@ sal_Bool BinTextObject::RemoveCharAttribs( sal_uInt16 _nWhich )
{
sal_Bool bChanged = false;
- for ( sal_uInt16 nPara = aContents.size(); nPara; )
+ for ( size_t nPara = aContents.size(); nPara; )
{
ContentInfo& rC = aContents[--nPara];
@@ -959,9 +971,9 @@ sal_Bool BinTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eF
return false;
}
-void BinTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& rFamily) const
+void BinTextObject::GetStyleSheet(sal_Int32 nPara, String& rName, SfxStyleFamily& rFamily) const
{
- if (nPara >= aContents.size())
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size())
return;
const ContentInfo& rC = aContents[nPara];
@@ -969,9 +981,9 @@ void BinTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& r
rFamily = rC.GetFamily();
}
-void BinTextObject::SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& rFamily)
+void BinTextObject::SetStyleSheet(sal_Int32 nPara, const String& rName, const SfxStyleFamily& rFamily)
{
- if (nPara >= aContents.size())
+ if (nPara < 0 || static_cast<size_t>(nPara) >= aContents.size())
return;
ContentInfo& rC = aContents[nPara];
@@ -1060,13 +1072,16 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
// The number of paragraphs ...
size_t nParagraphs = aContents.size();
- rOStream << static_cast<sal_uInt16>(nParagraphs);
+ // FIXME: this truncates, check usage of stream and if it can be changed,
+ // i.e. is not persistent, adapt this and reader.
+ sal_uInt16 nParagraphs_Stream = static_cast<sal_uInt16>(nParagraphs);
+ rOStream << nParagraphs_Stream;
sal_Unicode nUniChar = CH_FEATURE;
char cFeatureConverted = rtl::OString(&nUniChar, 1, eEncoding).toChar();
// The individual paragraphs ...
- for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
+ for (size_t nPara = 0; nPara < nParagraphs_Stream; ++nPara)
{
const ContentInfo& rC = aContents[nPara];
@@ -1191,7 +1206,7 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
rOStream << static_cast<sal_Bool>(bStoreUnicodeStrings);
if ( bStoreUnicodeStrings )
{
- for ( sal_uInt16 nPara = 0; nPara < nParagraphs; nPara++ )
+ for ( size_t nPara = 0; nPara < nParagraphs_Stream; nPara++ )
{
const ContentInfo& rC = aContents[nPara];
sal_uInt16 nL = rC.GetText().Len();