diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2018-07-23 15:08:41 +0200 |
---|---|---|
committer | Xisco Faulí <xiscofauli@libreoffice.org> | 2018-07-24 15:13:52 +0200 |
commit | af7b9609fee603756f8cb0668ae45af37c5fb4fb (patch) | |
tree | 06b26169d1dd95f0b664548460ad38fef006e912 | |
parent | 2fd44e945d3d0bb6318ba704c7ca2ac06c7db263 (diff) |
tdf#118716 Inner border of an embedded table can't be dragged around
regression from
commit f14b9d30293f180500fc56d81e5390021758e7c1
convert (a>b?a:b) to std::max(a,b)
In this code
int a;
std::max<sal_uInt16>(a,0)
std::max will first convert a and b to sal_uInt16, therefore potentially
converting a negative number to a positive number due to the conversion
rules. Then it will take the larger number.
While this code
int a;
static_cast<sal_uInt16>(a > 0 ? a : 0)
will compare first, and then convert the larger number to sal_uInt16,
which might result in making a "a" that is larger than 2^16 into a
smaller value, but which will never convert a negative "a" value into a
positive value.
Change-Id: Id4f6df0089b1a74ea4ac1c5d05655e7c1d8f0c7f
Reviewed-on: https://gerrit.libreoffice.org/57846
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
(cherry picked from commit c13865a4caf7898c4e59a5b22bbd493d6dad9661)
Reviewed-on: https://gerrit.libreoffice.org/57908
Tested-by: Xisco Faulí <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
-rw-r--r-- | sw/source/core/text/porfld.cxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/uiview/viewtab.cxx | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/sw/source/core/text/porfld.cxx b/sw/source/core/text/porfld.cxx index d40ff3ed3dc0..ac3596f78262 100644 --- a/sw/source/core/text/porfld.cxx +++ b/sw/source/core/text/porfld.cxx @@ -830,7 +830,7 @@ bool SwGrfNumPortion::Format( SwTextFormatInfo &rInf ) const bool bFull = rInf.Width() < rInf.X() + Width(); const bool bFly = rInf.GetFly() || ( rInf.GetLast() && rInf.GetLast()->IsFlyPortion() ); - SetAscent( std::max<sal_uInt16>(GetRelPos(), 0) ); + SetAscent( GetRelPos() > 0 ? GetRelPos() : 0 ); if( GetAscent() > Height() ) Height( GetAscent() ); diff --git a/sw/source/uibase/uiview/viewtab.cxx b/sw/source/uibase/uiview/viewtab.cxx index 4dab2bb0a4bf..545b3f2e48ab 100644 --- a/sw/source/uibase/uiview/viewtab.cxx +++ b/sw/source/uibase/uiview/viewtab.cxx @@ -1700,8 +1700,8 @@ void SwView::StateTabWin(SfxItemSet& rSet) const int nRgt = (bTableVertical ? nPageHeight : nPageWidth) - (aTabCols.GetLeftMin() + aTabCols.GetRight()); - const sal_uInt16 nL = std::max< sal_uInt16 >(nLft, 0); - const sal_uInt16 nR = std::max< sal_uInt16 >(nRgt, 0); + const sal_uInt16 nL = static_cast< sal_uInt16 >(std::max(nLft, 0)); + const sal_uInt16 nR = static_cast< sal_uInt16 >(std::max(nRgt, 0)); SvxColumnItem aColItem(nNum, nL, nR); @@ -1937,8 +1937,8 @@ void SwView::StateTabWin(SfxItemSet& rSet) const int nRgt = (bVerticalWriting ? nPageWidth : nPageHeight) - (aTabCols.GetLeftMin() + aTabCols.GetRight()); - const sal_uInt16 nL = std::max< sal_uInt16 >(nLft, 0); - const sal_uInt16 nR = std::max< sal_uInt16 >(nRgt, 0); + const sal_uInt16 nL = static_cast< sal_uInt16 >(std::max(nLft, 0)); + const sal_uInt16 nR = static_cast< sal_uInt16 >(std::max(nRgt, 0)); SvxColumnItem aColItem(0, nL, nR); @@ -2011,8 +2011,8 @@ void SwView::StateTabWin(SfxItemSet& rSet) const int nLft = aTabCols.GetLeftMin() + aTabCols.GetLeft(); const int nRgt = nPageWidth -(aTabCols.GetLeftMin() + aTabCols.GetRight()); - const sal_uInt16 nL = std::max< sal_uInt16 >(nLft, 0); - const sal_uInt16 nR = std::max< sal_uInt16 >(nRgt, 0); + const sal_uInt16 nL = static_cast< sal_uInt16 >(std::max(nLft, 0)); + const sal_uInt16 nR = static_cast< sal_uInt16 >(std::max(nRgt, 0)); aRectangle.SetLeft( nL ); if(nNum > 1) |