From f69e2f739ca3c23c9de055c8600c867e864cd4ff Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Thu, 18 Jan 2018 21:28:02 +0000 Subject: ofz#5475 Integer-overflow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I11d706c544698d57b75231e33e3d49f1ac1d4d73 Reviewed-on: https://gerrit.libreoffice.org/48159 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- tools/source/generic/gen.cxx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/source/generic/gen.cxx b/tools/source/generic/gen.cxx index 2627d9202842..5fe6eeeaa3d6 100644 --- a/tools/source/generic/gen.cxx +++ b/tools/source/generic/gen.cxx @@ -20,7 +20,7 @@ #include #include - +#include #include #include @@ -68,6 +68,23 @@ void tools::Rectangle::SetSize( const Size& rSize ) nBottom = RECT_EMPTY; } +void tools::Rectangle::SaturatingSetSize(const Size& rSize) +{ + if (rSize.Width() < 0) + nRight = o3tl::saturating_add(nLeft, (rSize.Width() + 1)); + else if ( rSize.Width() > 0 ) + nRight = o3tl::saturating_add(nLeft, (rSize.Width() - 1)); + else + nRight = RECT_EMPTY; + + if ( rSize.Height() < 0 ) + nBottom = o3tl::saturating_add(nTop, (rSize.Height() + 1)); + else if ( rSize.Height() > 0 ) + nBottom = o3tl::saturating_add(nTop, (rSize.Height() - 1)); + else + nBottom = RECT_EMPTY; +} + tools::Rectangle& tools::Rectangle::Union( const tools::Rectangle& rRect ) { if ( rRect.IsEmpty() ) -- cgit