You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2016/07/17 09:27:08 UTC
svn commit: r1753038 - in /poi/trunk/src:
java/org/apache/poi/hssf/model/InternalWorkbook.java
testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
Author: centic
Date: Sun Jul 17 09:27:07 2016
New Revision: 1753038
URL: http://svn.apache.org/viewvc?rev=1753038&view=rev
Log:
Bug 59665: Using HSSFWorkbook#setSheetOrder to move sheets to the end corrupts bspos value in WorkbookRecordList
Modified:
poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
Modified: poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java?rev=1753038&r1=1753037&r2=1753038&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/model/InternalWorkbook.java Sun Jul 17 09:27:07 2016
@@ -655,17 +655,18 @@ public final class InternalWorkbook {
* @param sheetname the name of the sheet to reorder
* @param pos the position that we want to insert the sheet into (0 based)
*/
-
public void setSheetOrder(String sheetname, int pos ) {
int sheetNumber = getSheetIndex(sheetname);
//remove the sheet that needs to be reordered and place it in the spot we want
boundsheets.add(pos, boundsheets.remove(sheetNumber));
// also adjust order of Records, calculate the position of the Boundsheets via getBspos()...
- int pos0 = records.getBspos() - (boundsheets.size() - 1);
+ int initialBspos = records.getBspos();
+ int pos0 = initialBspos - (boundsheets.size() - 1);
Record removed = records.get(pos0 + sheetNumber);
records.remove(pos0 + sheetNumber);
records.add(pos0 + pos, removed);
+ records.setBspos(initialBspos);
}
/**
Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java?rev=1753038&r1=1753037&r2=1753038&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java Sun Jul 17 09:27:07 2016
@@ -1197,4 +1197,17 @@ public final class TestHSSFWorkbook exte
wb = new HSSFWorkbook(new FileInputStream(file));
assertCloseDoesNotModifyFile(filename, wb);
}
+
+ @Test
+ public void setSheetOrderToEnd() throws Exception {
+ final HSSFWorkbook workbook = new HSSFWorkbook();
+ workbook.createSheet("A");
+ try {
+ for (int i = 0; i < 2 * workbook.getInternalWorkbook().getRecords().size(); i++) {
+ workbook.setSheetOrder("A", 0);
+ }
+ } catch (Exception e) {
+ throw new Exception("Moving a sheet to the end should not throw an exception, but threw ", e);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org