Fix bug #51273 - Hash codes can be negative when working on our own low memory hash for formula cell evaluation
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1128268 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
53ab14248c
commit
4410d044f0
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.8-beta3" date="2011-??-??">
|
<release version="3.8-beta3" date="2011-??-??">
|
||||||
|
<action dev="poi-developers" type="fix">51273 - Formula Value Cache fix for repeated evaluations</action>
|
||||||
<action dev="poi-developers" type="add">51171 - Improved performance of SharedValueManager </action>
|
<action dev="poi-developers" type="add">51171 - Improved performance of SharedValueManager </action>
|
||||||
<action dev="poi-developers" type="fix">51236 - XSSF set colour support for black/white to match getter</action>
|
<action dev="poi-developers" type="fix">51236 - XSSF set colour support for black/white to match getter</action>
|
||||||
<action dev="poi-developers" type="add">51196 - Initial support for Spreadsheet Chart API</action>
|
<action dev="poi-developers" type="add">51196 - Initial support for Spreadsheet Chart API</action>
|
||||||
|
@ -76,8 +76,7 @@ final class FormulaCellCacheEntrySet {
|
|||||||
|
|
||||||
|
|
||||||
private static boolean addInternal(CellCacheEntry[] arr, CellCacheEntry cce) {
|
private static boolean addInternal(CellCacheEntry[] arr, CellCacheEntry cce) {
|
||||||
|
int startIx = Math.abs(cce.hashCode() % arr.length);
|
||||||
int startIx = cce.hashCode() % arr.length;
|
|
||||||
|
|
||||||
for(int i=startIx; i<arr.length; i++) {
|
for(int i=startIx; i<arr.length; i++) {
|
||||||
CellCacheEntry item = arr[i];
|
CellCacheEntry item = arr[i];
|
||||||
@ -130,7 +129,7 @@ final class FormulaCellCacheEntrySet {
|
|||||||
// else - usual case
|
// else - usual case
|
||||||
// delete single element (without re-hashing)
|
// delete single element (without re-hashing)
|
||||||
|
|
||||||
int startIx = cce.hashCode() % arr.length;
|
int startIx = Math.abs(cce.hashCode() % arr.length);
|
||||||
|
|
||||||
// note - can't exit loops upon finding null because of potential previous deletes
|
// note - can't exit loops upon finding null because of potential previous deletes
|
||||||
for(int i=startIx; i<arr.length; i++) {
|
for(int i=startIx; i<arr.length; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user