sc/inc/bigrange.hxx | 48 ++++++++--------- sc/source/core/tool/chgtrack.cxx | 4 - sc/source/core/tool/refupdat.cxx | 10 +-- sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx | 44 +++++++-------- sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx | 2 5 files changed, 54 insertions(+), 54 deletions(-)
New commits: commit 6283ac89d76d68b7c09e018be78ec6b31018da9c Author: Luboš Luňák <l.lu...@collabora.com> AuthorDate: Tue Feb 15 15:50:41 2022 +0100 Commit: Luboš Luňák <l.lu...@collabora.com> CommitDate: Tue Feb 15 21:48:48 2022 +0100 make ScBigAddress use 64bit It may points outside of the document, so with huge sheets 32bit may not be enough. Change-Id: I7aee1d8e90d6c59b91ec07584aa9f36d9352b55c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129972 Tested-by: Jenkins Reviewed-by: Luboš Luňák <l.lu...@collabora.com> diff --git a/sc/inc/bigrange.hxx b/sc/inc/bigrange.hxx index 538d94dcb782..139c32c66174 100644 --- a/sc/inc/bigrange.hxx +++ b/sc/inc/bigrange.hxx @@ -27,13 +27,13 @@ class ScBigAddress { - sal_Int32 nRow; - sal_Int32 nCol; - sal_Int32 nTab; + sal_Int64 nRow; + sal_Int64 nCol; + sal_Int64 nTab; public: ScBigAddress() : nRow(0), nCol(0), nTab(0) {} - ScBigAddress( sal_Int32 nColP, sal_Int32 nRowP, sal_Int32 nTabP ) + ScBigAddress( sal_Int64 nColP, sal_Int64 nRowP, sal_Int64 nTabP ) : nRow( nRowP ), nCol( nColP ), nTab( nTabP ) {} ScBigAddress( const ScBigAddress& r ) : nRow( r.nRow ), nCol( r.nCol ), nTab( r.nTab ) {} @@ -41,20 +41,20 @@ public: ScBigAddress( const ScAddress& r ) : nRow( r.Row() ), nCol( r.Col() ), nTab( r.Tab() ) {} - sal_Int32 Col() const { return nCol; } - sal_Int32 Row() const { return nRow; } - sal_Int32 Tab() const { return nTab; } + sal_Int64 Col() const { return nCol; } + sal_Int64 Row() const { return nRow; } + sal_Int64 Tab() const { return nTab; } - void Set( sal_Int32 nColP, sal_Int32 nRowP, sal_Int32 nTabP ) + void Set( sal_Int64 nColP, sal_Int64 nRowP, sal_Int64 nTabP ) { nCol = nColP; nRow = nRowP; nTab = nTabP; } - void SetCol( sal_Int32 nColP ) { nCol = nColP; } - void SetRow( sal_Int32 nRowP ) { nRow = nRowP; } - void SetTab( sal_Int32 nTabP ) { nTab = nTabP; } - void IncCol( sal_Int32 n = 1 ) { nCol += n; } - void IncRow( sal_Int32 n = 1 ) { nRow += n; } - void IncTab( sal_Int32 n = 1 ) { nTab += n; } - - void GetVars( sal_Int32& nColP, sal_Int32& nRowP, sal_Int32& nTabP ) const + void SetCol( sal_Int64 nColP ) { nCol = nColP; } + void SetRow( sal_Int64 nRowP ) { nRow = nRowP; } + void SetTab( sal_Int64 nTabP ) { nTab = nTabP; } + void IncCol( sal_Int64 n = 1 ) { nCol += n; } + void IncRow( sal_Int64 n = 1 ) { nRow += n; } + void IncTab( sal_Int64 n = 1 ) { nTab += n; } + + void GetVars( sal_Int64& nColP, sal_Int64& nRowP, sal_Int64& nTabP ) const { nColP = nCol; nRowP = nRow; nTabP = nTab; } bool IsValid( const ScDocument& rDoc ) const; @@ -114,18 +114,18 @@ public: ScBigRange( ScBigRange&& ) = default; ScBigRange( const ScRange& r ) : aStart( r.aStart ), aEnd( r.aEnd ) {} - ScBigRange( sal_Int32 nCol1, sal_Int32 nRow1, sal_Int32 nTab1, - sal_Int32 nCol2, sal_Int32 nRow2, sal_Int32 nTab2 ) + ScBigRange( sal_Int64 nCol1, sal_Int64 nRow1, sal_Int64 nTab1, + sal_Int64 nCol2, sal_Int64 nRow2, sal_Int64 nTab2 ) : aStart( nCol1, nRow1, nTab1 ), aEnd( nCol2, nRow2, nTab2 ) {} - void Set( sal_Int32 nCol1, sal_Int32 nRow1, sal_Int32 nTab1, - sal_Int32 nCol2, sal_Int32 nRow2, sal_Int32 nTab2 ) + void Set( sal_Int64 nCol1, sal_Int64 nRow1, sal_Int64 nTab1, + sal_Int64 nCol2, sal_Int64 nRow2, sal_Int64 nTab2 ) { aStart.Set( nCol1, nRow1, nTab1 ); aEnd.Set( nCol2, nRow2, nTab2 ); } - void GetVars( sal_Int32& nCol1, sal_Int32& nRow1, sal_Int32& nTab1, - sal_Int32& nCol2, sal_Int32& nRow2, sal_Int32& nTab2 ) const + void GetVars( sal_Int64& nCol1, sal_Int64& nRow1, sal_Int64& nTab1, + sal_Int64& nCol2, sal_Int64& nRow2, sal_Int64& nTab2 ) const { aStart.GetVars( nCol1, nRow1, nTab1 ); aEnd.GetVars( nCol2, nRow2, nTab2 ); } @@ -147,8 +147,8 @@ public: { return !operator==( r ); } // These are used to define whole rows/cols/tabs. - constexpr static sal_Int32 nRangeMin = 0x80000000; - constexpr static sal_Int32 nRangeMax = 0x7fffffff; + constexpr static sal_Int64 nRangeMin = ::std::numeric_limits<sal_Int64>::min();; + constexpr static sal_Int64 nRangeMax = ::std::numeric_limits<sal_Int64>::max();; }; inline bool ScBigRange::Contains( const ScBigAddress& rAddr ) const diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index 2ba5ee368c24..e82be567387d 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -506,9 +506,9 @@ OUString ScChangeAction::GetRefString( aBuf.append(aTmp); aBuf.append('.'); } - aBuf.append(static_cast<sal_Int32>(aTmpRange.aStart.Row()+1)); + aBuf.append(static_cast<sal_Int64>(aTmpRange.aStart.Row()+1)); aBuf.append(':'); - aBuf.append(static_cast<sal_Int32>(aTmpRange.aEnd.Row()+1)); + aBuf.append(static_cast<sal_Int64>(aTmpRange.aEnd.Row()+1)); break; default: { diff --git a/sc/source/core/tool/refupdat.cxx b/sc/source/core/tool/refupdat.cxx index fd4f80ef4582..3fce7c714423 100644 --- a/sc/source/core/tool/refupdat.cxx +++ b/sc/source/core/tool/refupdat.cxx @@ -154,7 +154,7 @@ static void Expand( R& n1, R& n2, U nStart, S nD ) n1 = sal::static_int_cast<R>( n1 - nD ); } -static bool lcl_IsWrapBig( sal_Int32 nRef, sal_Int32 nDelta ) +static bool lcl_IsWrapBig( sal_Int64 nRef, sal_Int32 nDelta ) { if ( nRef > 0 && nDelta > 0 ) return nRef + nDelta <= 0; @@ -163,7 +163,7 @@ static bool lcl_IsWrapBig( sal_Int32 nRef, sal_Int32 nDelta ) return false; } -static bool lcl_MoveBig( sal_Int32& rRef, sal_Int32 nStart, sal_Int32 nDelta ) +static bool lcl_MoveBig( sal_Int64& rRef, sal_Int64 nStart, sal_Int32 nDelta ) { bool bCut = false; if ( rRef >= nStart ) @@ -178,7 +178,7 @@ static bool lcl_MoveBig( sal_Int32& rRef, sal_Int32 nStart, sal_Int32 nDelta ) return bCut; } -static bool lcl_MoveItCutBig( sal_Int32& rRef, sal_Int32 nDelta ) +static bool lcl_MoveItCutBig( sal_Int64& rRef, sal_Int32 nDelta ) { bool bCut = lcl_IsWrapBig( rRef, nDelta ); rRef += nDelta; @@ -382,8 +382,8 @@ ScRefUpdateRes ScRefUpdate::Update( UpdateRefMode eUpdateRefMode, ScRefUpdateRes eRet = UR_NOTHING; const ScBigRange aOldRange( rWhat ); - sal_Int32 nCol1, nRow1, nTab1, nCol2, nRow2, nTab2; - sal_Int32 theCol1, theRow1, theTab1, theCol2, theRow2, theTab2; + sal_Int64 nCol1, nRow1, nTab1, nCol2, nRow2, nTab2; + sal_Int64 theCol1, theRow1, theTab1, theCol2, theRow2, theTab2; rWhere.GetVars( nCol1, nRow1, nTab1, nCol2, nRow2, nTab2 ); rWhat.GetVars( theCol1, theRow1, theTab1, theCol2, theRow2, theTab2 ); diff --git a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx index c9c40e8d3d9d..6195b95a7ed7 100644 --- a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx @@ -66,12 +66,12 @@ void ScChangeTrackingExportHelper::GetAcceptanceState(const ScChangeAction* pAct void ScChangeTrackingExportHelper::WriteBigRange(const ScBigRange& rBigRange, XMLTokenEnum aName) { - sal_Int32 nStartColumn; - sal_Int32 nEndColumn; - sal_Int32 nStartRow; - sal_Int32 nEndRow; - sal_Int32 nStartSheet; - sal_Int32 nEndSheet; + sal_Int64 nStartColumn; + sal_Int64 nEndColumn; + sal_Int64 nStartRow; + sal_Int64 nEndRow; + sal_Int64 nStartSheet; + sal_Int64 nEndSheet; rBigRange.GetVars(nStartColumn, nStartRow, nStartSheet, nEndColumn, nEndRow, nEndSheet); if ((nStartColumn == nEndColumn) && (nStartRow == nEndRow) && (nStartSheet == nEndSheet)) @@ -392,16 +392,16 @@ void ScChangeTrackingExportHelper::WriteContentChange(const ScChangeAction* pAct void ScChangeTrackingExportHelper::AddInsertionAttributes(const ScChangeAction* pConstAction) { - sal_Int32 nPosition(0); - sal_Int32 nCount(0); - sal_Int32 nStartPosition(0); - sal_Int32 nEndPosition(0); - sal_Int32 nStartColumn; - sal_Int32 nEndColumn; - sal_Int32 nStartRow; - sal_Int32 nEndRow; - sal_Int32 nStartSheet; - sal_Int32 nEndSheet; + sal_Int64 nPosition(0); + sal_Int64 nCount(0); + sal_Int64 nStartPosition(0); + sal_Int64 nEndPosition(0); + sal_Int64 nStartColumn; + sal_Int64 nEndColumn; + sal_Int64 nStartRow; + sal_Int64 nEndRow; + sal_Int64 nStartSheet; + sal_Int64 nEndSheet; const ScBigRange& rBigRange = pConstAction->GetBigRange(); rBigRange.GetVars(nStartColumn, nStartRow, nStartSheet, nEndColumn, nEndRow, nEndSheet); @@ -460,12 +460,12 @@ void ScChangeTrackingExportHelper::AddDeletionAttributes(const ScChangeActionDel { sal_Int32 nPosition(0); const ScBigRange& rBigRange = pDelAction->GetBigRange(); - sal_Int32 nStartColumn(0); - sal_Int32 nEndColumn(0); - sal_Int32 nStartRow(0); - sal_Int32 nEndRow(0); - sal_Int32 nStartSheet(0); - sal_Int32 nEndSheet(0); + sal_Int64 nStartColumn(0); + sal_Int64 nEndColumn(0); + sal_Int64 nStartRow(0); + sal_Int64 nEndRow(0); + sal_Int64 nStartSheet(0); + sal_Int64 nEndSheet(0); rBigRange.GetVars(nStartColumn, nStartRow, nStartSheet, nEndColumn, nEndRow, nEndSheet); switch (pDelAction->GetType()) diff --git a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx index e0a0372eeae3..9ae06a72072d 100644 --- a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx @@ -650,7 +650,7 @@ void ScXMLChangeTrackingImportHelper::SetNewCell(const ScMyContentAction* pActio if (!pChangeActionContent->IsTopContent() || pChangeActionContent->IsDeletedIn()) return; - sal_Int32 nCol, nRow, nTab, nCol2, nRow2, nTab2; + sal_Int64 nCol, nRow, nTab, nCol2, nRow2, nTab2; pAction->aBigRange.GetVars(nCol, nRow, nTab, nCol2, nRow2, nTab2); if ((nCol >= 0) && (nCol <= rDoc.MaxCol()) && (nRow >= 0) && (nRow <= rDoc.MaxRow()) &&