Correct HSSFOptimiser logic for the case where the to-keep style wasn't previously in use. Fixes #54443
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1613175 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
f91eee5846
commit
0c8112b84a
@ -210,6 +210,10 @@ public class HSSFOptimiser {
|
|||||||
newPos[i] = (short)earlierDuplicate;
|
newPos[i] = (short)earlierDuplicate;
|
||||||
zapRecords[i] = true;
|
zapRecords[i] = true;
|
||||||
}
|
}
|
||||||
|
// If we got a duplicate, mark the one we're keeping as used
|
||||||
|
if(earlierDuplicate != -1) {
|
||||||
|
isUsed[earlierDuplicate] = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Loop over all the cells in the file, and identify any user defined
|
// Loop over all the cells in the file, and identify any user defined
|
||||||
|
@ -2679,4 +2679,27 @@ public final class TestBugs extends BaseTestBugzillaIssues {
|
|||||||
// Try to evaluate everything
|
// Try to evaluate everything
|
||||||
eval.evaluateAll();
|
eval.evaluateAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ClassCastException in HSSFOptimiser - StyleRecord cannot be cast to
|
||||||
|
* ExtendedFormatRecord when removing un-used styles
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void bug54443() throws Exception {
|
||||||
|
HSSFWorkbook workbook = new HSSFWorkbook( );
|
||||||
|
HSSFCellStyle style = workbook.createCellStyle();
|
||||||
|
HSSFCellStyle newStyle = workbook.createCellStyle();
|
||||||
|
|
||||||
|
HSSFSheet mySheet = workbook.createSheet();
|
||||||
|
HSSFRow row = mySheet.createRow(0);
|
||||||
|
HSSFCell cell = row.createCell(0);
|
||||||
|
|
||||||
|
// Use style
|
||||||
|
cell.setCellStyle(style);
|
||||||
|
// Switch to newStyle, style is now un-used
|
||||||
|
cell.setCellStyle(newStyle);
|
||||||
|
|
||||||
|
// Optimise
|
||||||
|
HSSFOptimiser.optimiseCellStyles(workbook);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user