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:
Nick Burch 2011-05-27 11:45:50 +00:00
parent 53ab14248c
commit 4410d044f0
2 changed files with 3 additions and 3 deletions

View File

@ -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>

View File

@ -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++) {