summaryrefslogtreecommitdiff
path: root/sc/source/ui/view/hintwin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/source/ui/view/hintwin.cxx')
-rw-r--r--sc/source/ui/view/hintwin.cxx15
1 files changed, 15 insertions, 0 deletions
diff --git a/sc/source/ui/view/hintwin.cxx b/sc/source/ui/view/hintwin.cxx
index d690ab33d002..047b3be2dc3e 100644
--- a/sc/source/ui/view/hintwin.cxx
+++ b/sc/source/ui/view/hintwin.cxx
@@ -31,6 +31,7 @@
#include <vcl/outdev.hxx>
#include <vcl/settings.hxx>
#include <vcl/metric.hxx>
+#include <sal/log.hxx>
#define HINT_LINESPACE 2
#define HINT_INDENT 3
@@ -104,9 +105,16 @@ drawinglayer::primitive2d::Primitive2DContainer ScOverlayHint::createOverlaySequ
sal_Int32 nIndex = 0;
Point aLineStart = aTextStart;
+ sal_Int32 nLineCount = 0;
while (nIndex != -1)
{
OUString aLine = m_aMessage.getToken( 0, '\r', nIndex );
+ if (aLine.getLength() > 255)
+ {
+ // prevent silliness higher up from hanging up the program
+ SAL_WARN("sc", "ridiculously long line, truncating, len=" << aLine.getLength());
+ aLine = aLine.copy(0,255);
+ }
aTextMatrix = basegfx::utils::createScaleTranslateB2DHomMatrix(
aFontSize.getX(), aFontSize.getY(),
@@ -125,6 +133,13 @@ drawinglayer::primitive2d::Primitive2DContainer ScOverlayHint::createOverlaySequ
aSeq.push_back(aMessage);
aLineStart.AdjustY(nLineHeight );
+ nLineCount++;
+ if (nLineCount > 50)
+ {
+ // prevent silliness higher up from hanging up the program
+ SAL_WARN("sc", "ridiculously long message, bailing out");
+ break;
+ }
}
rRange.expand(basegfx::B2DTuple(rRange.getMaxX() + aHintMargin.Width(),