[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.platform.swt] Re: TreeItem index out of bounds exception

The bug isn't easily reproducible, I've tried and only succeed occasionally. I also think its more likely to be an issue at the SWT level. The TreeViewer is adding multiple items to the tree in sequence, and somewhere in the middle of that operation the Tree fails because the index is out of range.

It looks like the constructor for TreeItem is trying to get the previous item added to the Tree using findItem(<handle to first item>, index-1) via findPrevious. That call is failing, but items are being added sequentially. Why would the n-th add fail when those before succeeded.

I think the actually problem may be an undetected failure in adding the previous item.

I'm sorry I can't give you a reproducible test case, but I'm hoping we can find a way to track this bug down by analyzing it a bit. I'd appreciate any help from those more familiar with the SWT code.

Tom Schindl wrote:
Could you modify one of our snippets [1] and file a bug against Platform/UI?

[1]http://wiki.eclipse.org/JFaceSnippets

Chris Audley schrieb:
With Eclipse 3.3.1.1 on win32:

I'm running into an exception adding a large number of items (>220) to an SWT Tree. I'm using a TreeViewer that already has four items displayed under the tree root. I call TreeViewer.add(TreeViewer.getRoot(), Object[]) to add an array of over 400 items to the tree viewer in addition to the 4 already displayed. Several of the items are filtered out before being passed to the SWT Tree, so the ultimate number of items added is less.

During the add, I get the following exception:

Caused by: java.lang.IllegalArgumentException: Index out of bounds
at org.eclipse.swt.SWT.error(SWT.java:3547)
at org.eclipse.swt.SWT.error(SWT.java:3481)
at org.eclipse.swt.SWT.error(SWT.java:3452)
at org.eclipse.swt.widgets.TreeItem.findPrevious(TreeItem.java:210)
at org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:119)
at org.eclipse.jface.viewers.TreeViewer.createNewRowPart(TreeViewer.java:790)


at org.eclipse.jface.viewers.TreeViewer.newItem(TreeViewer.java:302)
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:805)


at org.eclipse.jface.viewers.AbstractTreeViewer.createAddedElements(AbstractTreeViewer.java:374)

at org.eclipse.jface.viewers.AbstractTreeViewer.internalAdd(AbstractTreeViewer.java:265)

at org.eclipse.jface.viewers.TreeViewer.internalAdd(TreeViewer.java:645)
at org.eclipse.jface.viewers.AbstractTreeViewer.add(AbstractTreeViewer.java:139)


at com.beacon.discovery.ui.databinding.ObservableSetTreeContentProvider.addViewerElements(ObservableSetTreeContentProvider.java:25)

at com.beacon.discovery.ui.databinding.ObservableSetStructuredContentProvider.doDiff(ObservableSetStructuredContentProvider.java:103)

at com.beacon.discovery.ui.databinding.ObservableSetStructuredContentProvider.access$2(ObservableSetStructuredContentProvider.java:97)

at com.beacon.discovery.ui.databinding.ObservableSetStructuredContentProvider$1.handleSetChange(ObservableSetStructuredContentProvider.java:72)

at org.eclipse.core.databinding.observable.set.SetChangeEvent.dispatch(SetChangeEvent.java:61)

at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:128)

at org.eclipse.core.databinding.observable.ChangeSupport.fireEvent(ChangeSupport.java:38)

at org.eclipse.core.databinding.observable.set.AbstractObservableSet.fireSetChange(AbstractObservableSet.java:80)

at com.beacon.discovery.ui.models.BidOfferMessageManager.access$0(BidOfferMessageManager.java:1)

at com.beacon.discovery.ui.models.BidOfferMessageManager$Dispatcher.fireSetChange(BidOfferMessageManager.java:137)

at com.beacon.discovery.ui.util.SetChangeDispatcher.run(SetChangeDispatcher.java:54)

at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)


... 23 more

At AbstractTreeViewer.java:374, the loop variable is 218, so 218 of the items have already been created in the tree, and the index for the new item when the exception is thrown is 222.

Does anyone have any ideas what could be causing this error. Is te bug mine or in SWT?

Thanks
Chris Audley