X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller.cpp;h=36314c9a4f791192ddd39b3c0806f29828301dca;hp=e0c63c86ed70ff882dc3de30e4eca82558d284e2;hb=cf1b43bf049ab1a4c9451cd39a836836d4d76b8d;hpb=b97b29c76acefabbae2c0a4e9ecc261bf9dd8036 diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index e0c63c8..36314c9 100755 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -61,6 +61,7 @@ const char * const PLACEHOLDER_FONT_STYLE = "fontStyle"; const char * const PLACEHOLDER_POINT_SIZE = "pointSize"; const char * const PLACEHOLDER_PIXEL_SIZE = "pixelSize"; const char * const PLACEHOLDER_ELLIPSIS = "ellipsis"; +const unsigned int MAX_TEXT_LENGTH = 1024u * 32u; float ConvertToEven( float value ) { @@ -309,7 +310,7 @@ bool Controller::IsSmoothHandlePanEnabled() const void Controller::SetMaximumNumberOfCharacters( Length maxCharacters ) { - mImpl->mMaximumNumberOfCharacters = maxCharacters; + mImpl->mMaximumNumberOfCharacters = std::min( maxCharacters, MAX_TEXT_LENGTH ); } int Controller::GetMaximumNumberOfCharacters() @@ -592,6 +593,13 @@ void Controller::SetText( const std::string& text ) utf8 = reinterpret_cast( text.c_str() ); } + // Limit the text size. If the text size is too large, crash or deadlock will occur. + if( textSize > MAX_TEXT_LENGTH ) + { + DALI_LOG_WARNING( "The text size is too large(%d), limit the length to 32,768u\n", textSize ); + textSize = MAX_TEXT_LENGTH; + } + // Convert text into UTF-32 Vector& utf32Characters = mImpl->mModel->mLogicalModel->mText; utf32Characters.Resize( textSize );