| Summary: | Using M9, I got "Widget is disposed" error when overriding and update with HEAD contents | ||
|---|---|---|---|
| Product: | [Eclipse Project] Platform | Reporter: | Olivier Thomann <Olivier_Thomann> |
| Component: | CVS | Assignee: | Michael Valenta <Michael.Valenta> |
| Status: | RESOLVED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | P3 | ||
| Version: | 3.0 | ||
| Target Milestone: | 3.0 RC1 | ||
| Hardware: | PC | ||
| OS: | Windows XP | ||
| Whiteboard: | |||
|
Description
Olivier Thomann
This looks like the same problem we had seen and UI had fixed. They must check for disposed tree items. The UI fix was to continue processing other label changes so at least the view labels don't disappear. any exceptions that occur are still logged. Before we post the label changes, we check to make sure that the viewer's control is not disposed. However, we do not ensure that the model objects being past are still in the viewer. The viewer contain an internal hashmap that maps objects to tree items and the viewer updates the cache when items are added and removed. When an update is requested, if there is no corresponding item for a model object, the object is ignored. Howewer, it appears that the cache in the tree viewer has held on to a disposed item which is resulting in the exception included in this report. There are two possible causes. The equality check of the model elements could be off or the internal cache of the Tree could have a bug. I will verify that the model object's equality checks are right before moving to UI. I have verified that our equality checks look right. However, the hashCode does not so it may be related to that. I will fix the hashCode determination. I have entered bug 64572 against compare because the hashCode value of an object can change. I have also ensured that the sync model elements have the proper equals and hashCode. The proper equals was missing from the UnchangedContainer and the hashCode was wrong entirely. |