[Libreoffice-commits] core.git: vcl/source
Stephan Bergmann
sbergman at redhat.com
Mon May 5 02:33:37 PDT 2014
vcl/source/outdev/text.cxx | 4 ++++
1 file changed, 4 insertions(+)
New commits:
commit 304b3b3910bb472d663baaa789970df55ceeb09e
Author: Stephan Bergmann <sbergman at redhat.com>
Date: Mon May 5 10:50:22 2014 +0200
Handle GetTextBreak returning -1
I don't know what the root cause is exactly that made at least Mac OS X
--enable-dbgutil JunitTest_forms_unoapi start to fail recently, but when nWidth
is just 1 (which might be the root of the problem here, but could probably also
legitimately be the case) and GetTextWidth returns -1 (which it probably is
allowed to do), this would lead to an out-of-bounds OUString::operator[] access
at
> rtl::OUString::operator[] (this=0x118a04be0, index=-1) at ustring.hxx:421
> com::sun::star::i18n::BreakIterator_Unicode::getLineBreak (this=0x11986f6f8, Text=@0x118a04be0, nStartPos=-2, rLocale=@0x7fbd83821d98, nMinBreakPos=4, hOptions=@0x118a04620) at i18npool/source/breakiterator/breakiterator_unicode.cxx:429
> com::sun::star::i18n::BreakIteratorImpl::getLineBreak (this=0x1112d5c98, Text=@0x118a04be0, nStartPos=-1, rLocale=@0x7fbd83821d98, nMinBreakPos=4, hOptions=@0x118a04620, bOptions=@0x118a045f8) at i18npool/source/breakiterator/breakiteratorImpl.cxx:242
> OutputDevice::ImplGetTextLines (rLineInfo=@0x118a04bb0, nWidth=1, rStr=@0x118a04be0, nStyle=12560, _rLayout=@0x118a04db8) at vcl/source/outdev/text.cxx:527
> OutputDevice::ImplDrawText (this=0x7fbd8302d000, rTargetDevice=@0x7fbd8302d000, rRect=@0x118a05058, rOrigStr=@0x118a04f70, nStyle=12560, pVector=0x0, pDisplayText=0x0, _rLayout=@0x118a04db8) at vcl/source/outdev/text.cxx:1500
> OutputDevice::DrawText (this=0x7fbd8302d000, rRect=@0x118a05058, rOrigStr=@0x118a04f70, nStyle=12560, pVector=0x0, pDisplayText=0x0, _pTextLayout=0x0) at vcl/source/outdev/text.cxx:1754
> sfx2::TitledDockingWindow::Paint (this=0x7fbd8302d000, i_rArea=@0x118a051d0) at sfx2/source/dialog/titledockwin.cxx:218
Change-Id: I95c6027e86b9a608fe9eb05ffb83fb2316c175f2
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index bb9fbc1..af9eb1b 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -521,6 +521,10 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
{
const css::lang::Locale& rDefLocale(Application::GetSettings().GetUILanguageTag().getLocale());
sal_Int32 nSoftBreak = _rLayout.GetTextBreak( rStr, nWidth, nPos, nBreakPos - nPos );
+ if (nSoftBreak == -1)
+ {
+ nSoftBreak = nPos;
+ }
DBG_ASSERT( nSoftBreak < nBreakPos, "Break?!" );
css::i18n::LineBreakHyphenationOptions aHyphOptions( xHyph, css::uno::Sequence <css::beans::PropertyValue>(), 1 );
css::i18n::LineBreakUserOptions aUserOptions;
More information about the Libreoffice-commits
mailing list