summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2018-07-23 15:08:41 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2018-07-23 16:35:56 +0200
commitc13865a4caf7898c4e59a5b22bbd493d6dad9661 (patch)
treeec240498d4ba884309904e5b156a5d421740d71b
parentad7d72f0381f6a16db5c6c7bee538c475c233555 (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>
-rw-r--r--sw/source/core/text/porfld.cxx2
-rw-r--r--sw/source/uibase/uiview/viewtab.cxx12
2 files changed, 7 insertions, 7 deletions
diff --git a/sw/source/core/text/porfld.cxx b/sw/source/core/text/porfld.cxx
index 20b18918a5aa..a3cb46ea7f68 100644
--- a/sw/source/core/text/porfld.cxx
+++ b/sw/source/core/text/porfld.cxx
@@ -828,7 +828,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 cf6ad5d195b7..a823ec0c4705 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)