https://bz.apache.org/bugzilla/show_bug.cgi?id=61059
Bug ID: 61059
Summary: [PATCH] Fix incorrect use of short when unsigned short
was required in NamePtg
Product: POI
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: blocker
Priority: P2
Component: SS Common
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Created attachment 34967
--> https://bz.apache.org/bugzilla/attachment.cgi?id=34967&action=edit
0001-Fix-incorrect-use-of-short-when-unsigned-short-was-r.patch
A large spreadsheet (my guess is > 32k rows) crashes in the
FormulaEvaluator.evaluate(Cell) function with this error:
java.lang.ArrayIndexOutOfBoundsException: -32760
at java.util.ArrayList.elementData(ArrayList.java:418) ~[na:1.8.0_121]
at java.util.ArrayList.get(ArrayList.java:431) ~[na:1.8.0_121]
at
org.apache.poi.hssf.model.LinkTable.getNameRecord(LinkTable.java:321)
~[poi-3.16.jar:3.16]
at
org.apache.poi.hssf.model.InternalWorkbook.getNameRecord(InternalWorkbook.java:1660)
~[poi-3.16.jar:3.16]
at
org.apache.poi.hssf.usermodel.HSSFEvaluationWorkbook.getName(HSSFEvaluationWorkbook.java:220)
~[poi-3.16.jar:3.16]
at
org.apache.poi.ss.formula.WorkbookEvaluator.getEvalForPtg(WorkbookEvaluator.java:616)
~[poi-3.16.jar:3.16]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateFormula(WorkbookEvaluator.java:525)
~[poi-3.16.jar:3.16]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluateAny(WorkbookEvaluator.java:290)
~[poi-3.16.jar:3.16]
at
org.apache.poi.ss.formula.WorkbookEvaluator.evaluate(WorkbookEvaluator.java:232)
~[poi-3.16.jar:3.16]
at
org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator.evaluateFormulaCellValue(HSSFFormulaEvaluator.java:200)
~[poi-3.16.jar:3.16]
at
org.apache.poi.ss.formula.BaseFormulaEvaluator.evaluate(BaseFormulaEvaluator.java:101)
~[poi-3.16.jar:3.16]
I tracked down the bug in org.apache.poi.ss.formula.ptg.NamePtg line 47:
field_1_label_index = in.readShort();
Changing that to
field_1_label_index = in.readUShort();
Fixes the problem. I *think* that is the *right* fix, but you guys might know
better.
--
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]