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/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=c6d0c84be1f07a71e866d8387acb5948eee67ec2 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.