summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChr. Rossmanith <ChrRossmanith@gmx.de>2015-04-10 21:39:06 +0200
committerThorsten Behrens <Thorsten.Behrens@CIB.de>2015-04-11 11:20:55 +0000
commit9c3d44197613f1570026c0f351268bda293c08ea (patch)
tree72078c7db1abe3a0725691058b2d95f92c3f8143
parent970417facec36d9f7530444ddbd62a8f9e194b74 (diff)
tdf#56467: copy text of meta actions with valid text length
avoids !!br0ken!! in svg output Change-Id: I7f99a26f3a995cbaeb1e520a411a8e1c31a8a61f Reviewed-on: https://gerrit.libreoffice.org/15144 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
-rw-r--r--filter/source/svg/svgfontexport.cxx9
-rw-r--r--filter/source/svg/svgwriter.cxx9
2 files changed, 12 insertions, 6 deletions
diff --git a/filter/source/svg/svgfontexport.cxx b/filter/source/svg/svgfontexport.cxx
index 2de4b734adbb..b65370a423cb 100644
--- a/filter/source/svg/svgfontexport.cxx
+++ b/filter/source/svg/svgfontexport.cxx
@@ -102,7 +102,8 @@ void SVGFontExport::implCollectGlyphs()
case( META_TEXT_ACTION ):
{
const MetaTextAction* pA = static_cast<const MetaTextAction*>(pAction);
- aText = pA->GetText().copy( pA->GetIndex(), pA->GetLen() );
+ sal_Int32 aLength=std::min( pA->GetText().getLength(), pA->GetLen() );
+ aText = pA->GetText().copy( pA->GetIndex(), aLength );
}
break;
@@ -116,14 +117,16 @@ void SVGFontExport::implCollectGlyphs()
case( META_TEXTARRAY_ACTION ):
{
const MetaTextArrayAction* pA = static_cast<const MetaTextArrayAction*>(pAction);
- aText = pA->GetText().copy( pA->GetIndex(), pA->GetLen() );
+ sal_Int32 aLength=std::min( pA->GetText().getLength(), pA->GetLen() );
+ aText = pA->GetText().copy( pA->GetIndex(), aLength );
}
break;
case( META_STRETCHTEXT_ACTION ):
{
const MetaStretchTextAction* pA = static_cast<const MetaStretchTextAction*>(pAction);
- aText = pA->GetText().copy( pA->GetIndex(), pA->GetLen() );
+ sal_Int32 aLength=std::min( pA->GetText().getLength(), pA->GetLen() );
+ aText = pA->GetText().copy( pA->GetIndex(), aLength );
}
break;
diff --git a/filter/source/svg/svgwriter.cxx b/filter/source/svg/svgwriter.cxx
index 44fe1253bd36..01d218b5c227 100644
--- a/filter/source/svg/svgwriter.cxx
+++ b/filter/source/svg/svgwriter.cxx
@@ -3427,7 +3427,8 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
if( nWriteFlags & SVGWRITER_WRITE_TEXT )
{
const MetaTextAction* pA = static_cast<const MetaTextAction*>(pAction);
- const OUString aText = pA->GetText().copy( pA->GetIndex(), pA->GetLen() );
+ sal_Int32 aLength = std::min( pA->GetText().getLength(), pA->GetLen() );
+ const OUString aText = pA->GetText().copy( pA->GetIndex(), aLength );
if( !aText.isEmpty() )
{
@@ -3474,7 +3475,8 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
if( nWriteFlags & SVGWRITER_WRITE_TEXT )
{
const MetaTextArrayAction* pA = static_cast<const MetaTextArrayAction*>(pAction);
- const OUString aText = pA->GetText().copy( pA->GetIndex(), pA->GetLen() );
+ sal_Int32 aLength = std::min( pA->GetText().getLength(), pA->GetLen() );
+ const OUString aText = pA->GetText().copy( pA->GetIndex(), aLength );
if( !aText.isEmpty() )
{
@@ -3498,7 +3500,8 @@ void SVGActionWriter::ImplWriteActions( const GDIMetaFile& rMtf,
if( nWriteFlags & SVGWRITER_WRITE_TEXT )
{
const MetaStretchTextAction* pA = static_cast<const MetaStretchTextAction*>(pAction);
- const OUString aText = pA->GetText().copy( pA->GetIndex(), pA->GetLen() );
+ sal_Int32 aLength = std::min( pA->GetText().getLength(), pA->GetLen() );
+ const OUString aText = pA->GetText().copy( pA->GetIndex(), aLength );
if( !aText.isEmpty() )
{