ASF Bugzilla – Attachment 33914 Details for
Bug 59665
[Patch] Using HSSFWorkbook#setSheetOrder to move sheets to the end corrupts bspos value in WorkbookRecordList
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch which sets the value of bspos
setBspos.patch (text/plain), 1.84 KB, created by
Matthew Wightman
on 2016-06-06 12:12:32 UTC
(
hide
)
Description:
Patch which sets the value of bspos
Filename:
MIME Type:
Creator:
Matthew Wightman
Created:
2016-06-06 12:12:32 UTC
Size:
1.84 KB
patch
obsolete
>diff --git a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java >index 1285455..21bb83f 100644 >--- a/src/java/org/apache/poi/hssf/model/InternalWorkbook.java >+++ b/src/java/org/apache/poi/hssf/model/InternalWorkbook.java >@@ -651,10 +651,12 @@ public final class InternalWorkbook { > 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); > } > > /** >diff --git a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java >index 65a6422..04aa66d 100644 >--- a/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java >+++ b/src/testcases/org/apache/poi/hssf/usermodel/TestHSSFWorkbook.java >@@ -1210,4 +1210,17 @@ public final class TestHSSFWorkbook extends BaseTestWorkbook { > wb = new HSSFWorkbook(new FileInputStream(file)); > assertCloseDoesNotModifyFile(filename, wb); > } >+ >+ @Test >+ public void setSheetOrderToEnd() { >+ 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) { >+ fail("Moving a sheet to the end should not throw an exception, but threw " + e); >+ } >+ } > }
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 59665
: 33914