commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 25551] New: - NoSuchElementException in ReferenceMap views
Date Tue, 16 Dec 2003 00:57:55 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25551>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=25551

NoSuchElementException in ReferenceMap views

           Summary: NoSuchElementException in ReferenceMap views
           Product: Commons
           Version: Nightly Builds
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Collections
        AssignedTo: commons-dev@jakarta.apache.org
        ReportedBy: nullforge@hotmail.com


The keySet() and values() views for the 
org.apache.commons.collections.map.ReferenceMap class will throw a 
NoSuchElementException in their toArray(Object[]) methods if any keys or values 
have been reclaimed by the garbage collector and purge() has not been invoked.  
The toArray(Object[]) implementation inherited from 
java.util.AbstractCollection uses size()-based iteration rather than hasNext()-
based iteration.  This is inappropriate because the size of the map can change 
during iteration.  The problem is exacerbated by the fact that neither the 
KeySet nor Values classes purge stale elements from the list in their size() 
methods.

The attached test case reliably reproduces this exception with Sun's 1.3.1_07 
and 1.4.2 Win2K Hotspot VMs.

The attached diff is a proposed fix for this issue.

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message