Browse Source

Don't fail on row-nums larger than Integer.MAX_VALUE, we had one sample

file which triggered this

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1851211 13f79535-47bb-0310-9956-ffa450edef68
pull/141/head
Dominik Stadler 5 years ago
parent
commit
57b38a71b8

+ 5
- 2
src/java/org/apache/poi/ss/util/CellReference.java View File

@@ -350,8 +350,11 @@ public class CellReference {
* @throws NumberFormatException if rowStr is not parseable as an integer
*/
public static boolean isRowWithinRange(String rowStr, SpreadsheetVersion ssVersion) {
final int rowNum = Integer.parseInt(rowStr) - 1;
return isRowWithinRange(rowNum, ssVersion);
final long rowNum = Long.parseLong(rowStr) - 1;
if(rowNum > Integer.MAX_VALUE) {
return false;
}
return isRowWithinRange((int)rowNum, ssVersion);
}

/**

+ 2
- 2
src/testcases/org/apache/poi/ss/util/TestCellReference.java View File

@@ -399,10 +399,10 @@ public final class TestCellReference {
assertFalse("1 beyond last row", CellReference.isRowWithinRange(1048576, ss));
}

@Test(expected=NumberFormatException.class)
@Test
public void isRowWithinRangeNonInteger_BigNumber() {
String rowNum = "4000000000";
CellReference.isRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007);
assertFalse(CellReference.isRowWithinRange(rowNum, SpreadsheetVersion.EXCEL2007));
}
@Test(expected=NumberFormatException.class)

Loading…
Cancel
Save