| Summary: | ConcurrentModificationException trying to search in the target platform preference page | ||
|---|---|---|---|
| Product: | [Eclipse Project] PDE | Reporter: | Michael Rennie <Michael_Rennie> |
| Component: | UI | Assignee: | Curtis Windatt <curtis.windatt.public> |
| Status: | VERIFIED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | CC: | ankur_sharma, curtis.windatt.public |
| Version: | 3.7 | ||
| Target Milestone: | 3.7 M6 | ||
| Hardware: | PC | ||
| OS: | Windows 7 | ||
| Whiteboard: | |||
|
Description
Michael Rennie
Had a chance to debug this, and it appears to only be reproducible on Win 7.
I found that in the CachedCheckboxTreeViewer the job to perform the filtering is modifying the checkstate set and the iterator taken below:
Iterator iter = checkState.iterator();
Object element = null;
if (iter.hasNext())
expandAll();
while (iter.hasNext()) {
element = iter.next();
// Call the super class as there is no need to update the check state
super.setChecked(element, true);
}
is now bogus after the call the expandAll().
You should probably change the Iterator to ListIterator or re-take the iterator after the call the expandAll().
The above snippet comes from CachedCheckboxTreeViewer#restoreLeafCheckState.
should also change the code in CachedCheckboxTreeViewer to have a NO_ELEMENTS constant for the empty object array; there are many places in the code where empty arrays are created during tree item callbacks. I was able to reproduce in Linux as well. Fixed in HEAD. See CachedCheckboxTreeViewer Verified in I20110307-1300 |