From: Paul Wisbey
Date: Tue, 10 Mar 2015 08:25:42 +0000 (+0000)
Subject: Fixed crash when Visual model positions < glyphs
X-Git-Tag: new_text_0.1~7
X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;ds=sidebyside;h=refs%2Fchanges%2F78%2F36578%2F3;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git
Fixed crash when Visual model positions < glyphs
Change-Id: I61398d876cc3614d97487a5c02c0dd51201f3420
---
diff --git a/dali-toolkit/internal/text/text-view.cpp b/dali-toolkit/internal/text/text-view.cpp
index 235f534..d12c697 100644
--- a/dali-toolkit/internal/text/text-view.cpp
+++ b/dali-toolkit/internal/text/text-view.cpp
@@ -55,7 +55,14 @@ Length View::GetNumberOfGlyphs() const
{
if( mImpl->mVisualModel )
{
- return mImpl->mVisualModel->GetNumberOfGlyphs();
+ VisualModel& model = *mImpl->mVisualModel;
+
+ Length glyphCount = model.GetNumberOfGlyphs();
+ Length positionCount = model.GetNumberOfGlyphPositions();
+
+ DALI_ASSERT_DEBUG( positionCount <= glyphCount && "Invalid glyph positions in Model" );
+
+ return (positionCount < glyphCount) ? positionCount : glyphCount;
}
return 0;
diff --git a/dali-toolkit/internal/text/visual-model.cpp b/dali-toolkit/internal/text/visual-model.cpp
index ab183e4..abf4f65 100644
--- a/dali-toolkit/internal/text/visual-model.cpp
+++ b/dali-toolkit/internal/text/visual-model.cpp
@@ -157,6 +157,11 @@ void VisualModel::SetGlyphPositions( const Vector2* glyphPositions,
memcpy( modelPositions.Begin(), glyphPositions, numberOfGlyphs * sizeof( Vector2 ) );
}
+Length VisualModel::GetNumberOfGlyphPositions() const
+{
+ return mImpl->mGlyphPositions.Count();
+}
+
void VisualModel::GetGlyphPositions( Vector2* glyphPositions,
GlyphIndex glyphIndex,
Length numberOfGlyphs ) const
diff --git a/dali-toolkit/internal/text/visual-model.h b/dali-toolkit/internal/text/visual-model.h
index ad2a137..ac3b096 100644
--- a/dali-toolkit/internal/text/visual-model.h
+++ b/dali-toolkit/internal/text/visual-model.h
@@ -178,6 +178,14 @@ public:
Length numberOfGlyphs );
/**
+ * Retrieves the number of glyph positions set.
+ *
+ * @note This may be less than the number of glyphs in the model.
+ * @return The number of glyphs.
+ */
+ Length GetNumberOfGlyphPositions() const;
+
+ /**
* @brief Retrieves the glyph positions.
*
* @pre The size of the @p positions buffer needs to be big enough to copy the @p numberOfGlyphs positions.