From 08a5346b49f4ca8234bf97750e1e030ef89b2750 Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Mon, 11 Dec 2017 14:40:30 +0900 Subject: [PATCH] Add codes to prevent underflow Change-Id: Id5d5205f587885c288744d7315ba966f0357c951 --- dali-toolkit/internal/visuals/npatch-loader.cpp | 8 ++++---- dali-toolkit/internal/visuals/npatch/npatch-visual.cpp | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/dali-toolkit/internal/visuals/npatch-loader.cpp b/dali-toolkit/internal/visuals/npatch-loader.cpp index f23f1ca..8bc050f 100644 --- a/dali-toolkit/internal/visuals/npatch-loader.cpp +++ b/dali-toolkit/internal/visuals/npatch-loader.cpp @@ -79,10 +79,10 @@ std::size_t NPatchLoader::Load( const std::string& url, const Rect< int >& borde data->textureSet = mCache[ cachedIndex ]->textureSet; NinePatchImage::StretchRanges stretchRangesX; - stretchRangesX.PushBack( Uint16Pair( border.left, data->croppedWidth - border.right ) ); + stretchRangesX.PushBack( Uint16Pair( border.left, ( (data->croppedWidth >= static_cast< unsigned int >( border.right )) ? data->croppedWidth - border.right : 0 ) ) ); NinePatchImage::StretchRanges stretchRangesY; - stretchRangesY.PushBack( Uint16Pair( border.top, data->croppedHeight - border.bottom ) ); + stretchRangesY.PushBack( Uint16Pair( border.top, ( (data->croppedHeight >= static_cast< unsigned int >( border.bottom )) ? data->croppedHeight - border.bottom : 0 ) ) ); data->stretchPixelsX = stretchRangesX; data->stretchPixelsY = stretchRangesY; @@ -137,10 +137,10 @@ std::size_t NPatchLoader::Load( const std::string& url, const Rect< int >& borde data->textureSet.SetTexture( 0u, texture ); NinePatchImage::StretchRanges stretchRangesX; - stretchRangesX.PushBack( Uint16Pair( border.left, data->croppedWidth - border.right ) ); + stretchRangesX.PushBack( Uint16Pair( border.left, ( (data->croppedWidth >= static_cast< unsigned int >( border.right )) ? data->croppedWidth - border.right : 0 ) ) ); NinePatchImage::StretchRanges stretchRangesY; - stretchRangesY.PushBack( Uint16Pair( border.top, data->croppedHeight - border.bottom ) ); + stretchRangesY.PushBack( Uint16Pair( border.top, ( (data->croppedHeight >= static_cast< unsigned int >( border.bottom )) ? data->croppedHeight - border.bottom : 0 ) ) ); data->stretchPixelsX = stretchRangesX; data->stretchPixelsY = stretchRangesY; diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index da50b3e..f61848c 100755 --- a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp +++ b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp @@ -570,8 +570,8 @@ void NPatchVisual::ApplyTextureAndUniforms() Uint16Pair stretchX = data->stretchPixelsX[ 0 ]; Uint16Pair stretchY = data->stretchPixelsY[ 0 ]; - uint16_t stretchWidth = stretchX.GetY() - stretchX.GetX(); - uint16_t stretchHeight = stretchY.GetY() - stretchY.GetX(); + uint16_t stretchWidth = ( stretchX.GetY() >= stretchX.GetX() ) ? stretchX.GetY() - stretchX.GetX() : 0; + uint16_t stretchHeight = ( stretchY.GetY() >= stretchY.GetX() ) ? stretchY.GetY() - stretchY.GetX() : 0; mImpl->mRenderer.RegisterProperty( "uFixed[0]", Vector2::ZERO ); mImpl->mRenderer.RegisterProperty( "uFixed[1]", Vector2( stretchX.GetX(), stretchY.GetX()) ); -- 2.7.4