[Libreoffice-commits] core.git: sc/source
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Fri Jun 11 11:49:01 UTC 2021
sc/source/filter/excel/impop.cxx | 51 ++++++++++++++++++++++++++++-----------
1 file changed, 37 insertions(+), 14 deletions(-)
New commits:
commit b1d19950d3f89460109dfc0e3720ac22d4307ff8
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Fri Jun 11 10:43:24 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Fri Jun 11 13:48:22 2021 +0200
Resolves: tdf#142758 Revert record parse misunderstanding
of 'Related: cid#1474351 Untrusted loop bound'
and add in documentation for the records
This reverts commit 2134d83b8d6e73ca8eacd812eb3431bff38c74f6.
This reverts commit 7c2e6058439da9d061e5e0bbd07c8b6d4f2ffcbf.
This reverts commit 3748fe3e4fc22a400b3120010192b75754e38b17.
Change-Id: I5b407eb4388a8d67fc863cc6070fbbf8b15321d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117044
Tested-by: Caolán McNamara <caolanm at redhat.com>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx
index 7df9e0567323..1c107d4ad092 100644
--- a/sc/source/filter/excel/impop.cxx
+++ b/sc/source/filter/excel/impop.cxx
@@ -858,16 +858,28 @@ void ImportExcel::Shrfmla()
void ImportExcel::Mulrk()
{
+ /* rw (2 bytes): An Rw structure that specifies the row containing the
+ cells with numeric data.
+
+ colFirst (2 bytes): A Col structure that specifies the first column in
+ the series of numeric cells within the sheet. The value of colFirst.col
+ MUST be less than or equal to 254.
+
+ rgrkrec (variable): An array of RkRec structures. Each element in the
+ array specifies an RkRec in the row. The number of entries in the array
+ MUST be equal to the value given by the following formula:
+
+ Number of entries in rgrkrec = (colLast.col – colFirst.col +1)
+
+ colLast (2 bytes): A Col structure that specifies the last column in
+ the set of numeric cells within the sheet. This colLast.col value MUST
+ be greater than the colFirst.col value. */
+
XclAddress aXclPos;
aIn >> aXclPos;
- XclAddress aCurrXclPos(aXclPos);
- while (true)
+ for( XclAddress aCurrXclPos( aXclPos ); (aXclPos.mnCol <= aCurrXclPos.mnCol) && (aIn.GetRecLeft() > 2); ++aCurrXclPos.mnCol )
{
- if (aIn.GetRecLeft() < 6)
- break;
- if (aCurrXclPos.mnCol < aXclPos.mnCol)
- break;
sal_uInt16 nXF = aIn.ReaduInt16();
sal_Int32 nRkNum = aIn.ReadInt32();
@@ -877,28 +889,39 @@ void ImportExcel::Mulrk()
GetXFRangeBuffer().SetXF( aScPos, nXF );
GetDocImport().setNumericCell(aScPos, XclTools::GetDoubleFromRK(nRkNum));
}
- ++aCurrXclPos.mnCol;
}
}
void ImportExcel::Mulblank()
{
+ /* rw (2 bytes): An Rw structure that specifies a row containing the blank
+ cells.
+
+ colFirst (2 bytes): A Col structure that specifies the first column in
+ the series of blank cells within the sheet. The value of colFirst.col
+ MUST be less than or equal to 254.
+
+ rgixfe (variable): An array of IXFCell structures. Each element of this
+ array contains an IXFCell structure corresponding to a blank cell in the
+ series. The number of entries in the array MUST be equal to the value
+ given by the following formula:
+
+ Number of entries in rgixfe = (colLast.col – colFirst.col +1)
+
+ colLast (2 bytes): A Col structure that specifies the last column in
+ the series of blank cells within the sheet. This colLast.col value MUST
+ be greater than colFirst.col value. */
+
XclAddress aXclPos;
aIn >> aXclPos;
- XclAddress aCurrXclPos(aXclPos);
- while (true)
+ for( XclAddress aCurrXclPos( aXclPos ); (aXclPos.mnCol <= aCurrXclPos.mnCol) && (aIn.GetRecLeft() > 2); ++aCurrXclPos.mnCol )
{
- if (aIn.GetRecLeft() < 2)
- break;
- if (aCurrXclPos.mnCol < aXclPos.mnCol)
- break;
sal_uInt16 nXF = aIn.ReaduInt16();
ScAddress aScPos( ScAddress::UNINITIALIZED );
if( GetAddressConverter().ConvertAddress( aScPos, aCurrXclPos, GetCurrScTab(), true ) )
GetXFRangeBuffer().SetBlankXF( aScPos, nXF );
- ++aCurrXclPos.mnCol;
}
}
More information about the Libreoffice-commits
mailing list